X11 - 图形渲染改进

2023-12-01

我目前正在将无符号整数数组渲染到窗口上的二维图像,但是,对于我想要用它完成的任务来说,它太慢了。这是我的代码:

int x = 0;
int y = 0;

GC gc;
XGCValues gcv;
gc = XCreateGC(display, drawable, GCForeground, &gcv);

while (y < height) {
    while (x < width) {
            XSetForeground(display, gc, AlphaBlend(pixels[(width*y)+x], backcolor));
            XDrawPoint(display, drawable, gc, x, y);
            x++;
    }
    x = 0;
    y++;
}

XFlush(display);

我想知道是否有人向我展示一种更快的方法来执行此操作,同时仍然使用我的无符号整数数组作为基本图像来绘制到窗口并将其保留在 X11 API 中。我想让它尽可能保持独立。我不想使用 OpenGL、SDL 或任何其他我不需要的额外图形库。谢谢。


我认为使用XImage可以满足您的需求:参见https://tronche.com/gui/x/xlib/graphics/images.html

XImage * s_image;

void init(...)
{
    /* data linked to image, 4 bytes per pixel */
    char *data = calloc(width * height, 4);
    /* image itself */
    s_image = XCreateImage(display, 
        DefaultVisual(display, screen),
        DefaultDepth(display, screen), 
        ZPixmap, 0, data, width, height, 32, 0);
}

void display(...)
{
    /* fill the image */    
    size_t offset = 0;
    y = 0;
    while (y < height) {  
        x = 0;
        while (x < width) {
            XPutPixel(s_image, x, y, AlphaBlend((pixels[offset++], backcolor));
            x++;
        }    
        y++;
    }

    /* put image on display */
    XPutImage(display, drawable, cg, s_image, 0, 0, 0, 0, width, height);

    XFlush(display);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

X11 - 图形渲染改进 的相关文章

随机推荐

  • 将 PDF 渲染为图像并提取超链接

    我使用 imagemagick 将 PDF 由 pdfLaTex 生成 渲染为图像 convert density 120 test pdf trim test png 然后我在 HTML 文件中使用该图像 以便在自己的 wiki 引擎中包
  • 为什么我的 ML 函数推断的类型与我预期的不同?

    我做了一个函数 它的名字是maptree 下面是我的代码 datatype a tree LEAF of a NODE of a tree a tree fun maptree f NODE X Y NODE maptree f X map
  • Linux 中有标准的退出状态代码吗?

    在 Linux 中 如果进程的退出状态为 0 则认为该进程已正确完成 我发现分段错误通常会导致退出状态为 11 尽管我不知道这只是我工作的约定 像这样失败的应用程序都是内部的 还是标准 Linux 中的进程有标准退出代码吗 第 1 部分 高
  • ASP.Net / MySQL:将内容翻译成多种语言

    我有一个 ASP Net 网站 它使用 MySQL 数据库作为后端 该网站是一个英语电子商务系统 我们正在考虑将其翻译成大约五种其他语言 法语 西班牙语等 的可能性 我们将让人工翻译人员来执行翻译 我们已经研究过自动化服务 但这些还不够好
  • Azure 使用文件共享从 IIS VM 共享照片?

    如何创建可在 VM 中运行的 Web 服务器之间共享的文件共享 以直接访问 Azure 中的 Blob 存储 我正在将用 net 1 1 编写的现有 n 层网站应用程序迁移到 Azure 虚拟机 这是一个遗留应用程序 我想将其以当前形式移动
  • MPMoviePlayerController 处于纵向模式?

    我想知道是否可以在纵向模式下使用 MoviePlayer 感谢您的帮助 T 如果你使用 moviePlayer setOrientation UIDeviceOrientationPortrait animated NO API 您的应用程
  • 如何暂停 Windows 关闭

    我需要在启动和关闭时将声卡静音 取消静音 我找到了一些代码来完成这项工作 但 Windows 通常会突然关闭 并且声音永远不会静音 有人可以告诉我如何暂停关闭足够长的时间以使我的应用程序静音吗 我可以使用一个简单的 TTimer 来暂停应用
  • 在 SQL Server Management Studio 中生成脚本

    如果我有一个包含 SQL Server 数据库中数据的表 我如何生成一个脚本来创建该表并添加数据 如果我右键单击表格然后选择Script Table As gt Create to gt File 它生成一个脚本来仅创建没有数据的表 我需要
  • php pdo多数组插入

    我已经玩了几个小时并试图解决这个问题 但看起来很难解决 我能够进行单个数组插入 person array name gt Wendy age gt 32 但如果我想要多个这样的 person array array name gt Dan
  • GCE + K8S - 访问推荐IP地址

    通过 Google Container Engine 上的标准 Kubernetes 部署 要包含使用 Kubernetes 负载均衡器设置配置的服务来创建网络负载均衡器 是否可以在应用程序中访问用户 或引用 的 IP 地址 对于 PHP
  • 将 utf8 字符串拆分为字符数组

    我正在尝试拆分utf8将字符串编码为字符数组 我现在使用的功能曾经可以工作 但由于某种原因它不再工作了 可能是什么原因 更好的是 我该如何解决它 这是我的字符串 Zelf heb ik maar n vraag wie ben jij 这是
  • 不允许用户保存 TFS 凭据

    这是这个问题的后续问题 加载 Visual Studio 时 如何更改用于连接到 Visual Studio Online TFSPreview 的默认凭据 我遇到的问题是 如果用户选中了 记住我的凭据 框 我需要按照我链接的问题中给出的答
  • 向 UIView 添加宽度边框,显示外面的小背景

    我正在尝试添加圆形边框UIView以绿色背景 我创建了简单的UIView具有 borderWidth cornerRadius 和 borderColor 属性的子类 我从故事板中设置它 IBDesignable class Rounded
  • 从现有集合中初始化对象初始值设定项中的仅获取集合

    我有一个具有仅获取集合属性的类 我想使用现有集合中的值来初始化集合 我知道可以初始化集合使用集合初始值设定项 我还可以创建该对象然后使用AddRange在集合上添加现有集合的项目 然而 这将创建具有空列表的对象 然后添加现有项目 有没有办法
  • 在 Shell 中重命名逆序编号的文件

    我正在寻找一种实用的方法来在 shell 中进行此练习 我有这些文件 1 txt 2 txt 3 txt 4 txt 5 txt 50 txt 我想这样重命名 50 txt 1 txt 49 txt 2 txt 48 txt 3 txt 以
  • MySQL计算N行的移动平均值

    我正在尝试计算移动平均值ofN 行 for单个查询中的所有行 在示例中 我尝试计算 50 行的移动平均值 SELECT h1 date h1 security id SELECT AVG last50 close FROM SELECT h
  • jsdom.env 不是将 svg 导出到图像的函数

    我正在尝试根据以下教程将 d3 svg 图像转换为图像 https github com hugolpz svgcreator node js 我安装以下语句 sudo npm install g jsdom d3js npm instal
  • 如何在我的 Netbeans 项目中包含外部 jar

    当我运行 清理并构建 时 jar正在创建的文件仅在以下情况下运行lib文件夹与 jar file 因此 如果我将 jar 文件移动到桌面并保留lib文件夹中的dist文件夹中 jar 文件会给我一个例外 我该如何处理这个问题 我通过仅创建一
  • docker run 命令出现“Exec 格式错误”

    我有这个基于 Golang 的 Dockerfile FROM golang latest RUN mkdir p app WORKDIR app COPY bin huru CMD huru 我检查了一下 huru 二进制文件位于工作目录
  • X11 - 图形渲染改进

    我目前正在将无符号整数数组渲染到窗口上的二维图像 但是 对于我想要用它完成的任务来说 它太慢了 这是我的代码 int x 0 int y 0 GC gc XGCValues gcv gc XCreateGC display drawable