问题标签 [gldrawpixels]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1094 浏览

opengl - OpenGL 和 GIMP 图像文件导出为 .c 文件

我用 GIMP 绘制了一个图像文件并将其保存为 .c 文件。然后我在我的 OpenGL 代码中使用以下内容将图像加载到屏幕上:

然而,加载的图像看起来倒置了 180 度。我想知道我是否可以在 OpenGL 中提供一个选项,以便我可以以与 GIMP 中相同的方向渲染图像,顶部朝上,左侧在左侧,可能使用 glPixelStore 或其他一些 OpenGL 函数调用以指定如何解包像素?

0 投票
3 回答
5530 浏览

opengl - 如何缩放 glDrawPixels?

我需要缩放 glDrawPixels 图像的结果。

我正在 Qt QGLWidget 中使用 glDrawPixels 绘制一个 640x480 像素的图像缓冲区。

我尝试在 PaintGL 中执行以下操作:

但它不起作用。

我将 OpenGL 视口和 glOrtho 设置为小部件的大小:

0 投票
2 回答
1335 浏览

c++ - 使用 glDrawPixels 时遇到问题

我必须使用 glDrawPixels 来实现光栅算法。

现在我只是想得到一个 glDrawPixels 工作但有问题的简单例子。

以上是我试图开始工作的代码,据我了解,它应该简单地绘制一个 512x512 的红色方块。

但是我得到的是底部的一排红色,其他一切都是灰色的。

0 投票
1 回答
3310 浏览

opengl - 如何使用 glDrawPixels 将图片渲染为背景

事情是这样的:我想加载一张图片作为填充整个视口的背景。无论相机朝向何处,此背景都应始终朝向相机。首先我自然认为使用纹理作为背景,我的代码如下:

相信我,myimage 是一个可以将图片加载到纹理中的 CIMAGE 类,它运行良好。但是,由于某些未知原因,我的应用程序无法将纹理加载到矩形中。(我在这里描述了这个问题点击)结果,我只能在我的视口周围看到一个矩形框。

所以,我想出了另一个解决方案。

我使用 glDrawPixels 而不是纹理。我的代码如下:

图片出现了!然而,这张照片并不总是面对我的相机。它只出现在一个特定的方向。你知道,就像场景中的一个物体,而不是一个总是面向相机的背景。

那么有人知道如何使用 glDrawPixels 来实现背景吗?

顺便说一句,我认为这个背景不是放置在 3D 场景中的对象。所以广告牌可能不是我的解决方案。同样,这个背景填充了整个视口,并且始终面向摄像机。

0 投票
3 回答
1491 浏览

opengl - glDrawPixels 错误的像素位置

我一直在尝试使用 java 和 lwjgl 在 opengl 中绘制 320 x 240 全屏分辨率图像。我将分辨率设置为 640 x 480,并将像素大小加倍以填充空间。经过大量的谷歌搜索后,我找到了一些关于使用 glDrawPixels 函数来加速绘制到屏幕的信息。我想通过为屏幕上的所有像素分配随机颜色来测试它,但它不会填满屏幕。我将宽度分成 4 个部分,每个部分 80 像素,并将它们着色为红色、绿色、蓝色和白色。我看到我在交错颜色,但我不知道如何。

这是输出的图像:

图像

这是我运行openGL代码的地方:

这里是我创建像素颜色数据的地方:

如果您能弄清楚为什么我不能让像素与 x 和 y 坐标对齐,我希望它们能够对齐,那就太好了。我已经读过 glDrawPixels 可能不是将像素绘制到屏幕上的最佳或最快方法,但我想了解为什么在我不得不转向其他方法之前会遇到这个特殊问题。

0 投票
3 回答
3280 浏览

c++ - OpenGL 3.0 中 glDrawPixels 的替代方案?

所以我知道 glDrawPixels 已被弃用。有没有做同样事情的功能?我想过使用纹理,但它们是由当前矩阵修改的,与 glDrawPixels 绘制的像素不同。

0 投票
1 回答
804 浏览

webgl - WebGL 绘制像素?

我有一个来自 gl.readPixels() 调用的像素数组。我可以将这些像素放回绘图缓冲区或帧缓冲区吗?即我想调用类似gl.drawPixels 的东西,但WebGL API 中没有。我是要使用纹理并将其渲染成平面,还是我错过了什么?

0 投票
2 回答
948 浏览

c++ - OpenGL + libpng:图像上的颜色错误

自上周以来,我一直在尝试在屏幕上加载和显示 PNG。我使用库 libpng 将 png 复制到内存中,然后使用 glDrawPixels 在屏幕上显示它。结果如下:

原图:

在此处输入图像描述

“游戏”中的截图:

在此处输入图像描述

而代码,我正在使用静态 Image::loadPNG 将 PNG 加载到地图中,如下所示:

最后在 OpenGL 中显示它:

如您所见,颜色与应有的颜色不同。谁能帮我弄清楚如何解决我的问题?

0 投票
1 回答
554 浏览

opengl - 用于在 OpenGL 中显示的 DevIL PNG 格式

我在 OpenGL 中做一些像素工作,一切都很顺利,直到我不得不加载 PNG。我找到了一个叫做“DevIL”的东西,并按照我找到的一个例子。它确实显示了一些东西,但它只是一种随机的彩虹。据我所知,我做得对;我将数据输出到文本文件以进行检查。我尝试了其他一些库,但构建它们有点超出我的能力。这是我的设置:

这是我的绘图程序:

我知道对齐是错误的;我稍后会解决这个问题。问题是颜色完全不对

PS我知道你应该使用带纹理的四边形

0 投票
0 回答
182 浏览

c - glDrawPixels 带纹理四边形的优化

我有一个系统,只要 redraw() 完成执行,我就会在分配的内存中缓存每个窗口的后台缓冲区。后台缓冲区被存储为一个无符号长数组,其中内容被读入如下,并且正在使用 glDrawPixels() 调用内容;

我曾希望优化这个过程。据我了解,通过将 glDrawPixels() 替换为带纹理的四边形,在大多数系统上,该过程应该更快。然而,我的窗口并不总是在 POT 中。经过简短的研究,人们似乎使用了这三种方法。

  1. GL_TEXTURE_RECTANGLE_ARB/(GL_TEXTURE_RECTANGLE?)
  2. 将图像的画布大小制作成 POT 图像,而扩展部分将由其他颜色填充。
  3. 将您的图像分解成更小的 POT 属性图块,然后相应地重新构建它们。

我的问题是这些。

  1. 哪种方法最会实施?目前,我倾向于第一个。不过,我认为它对旧显卡不太友好?
  2. GL_TEXTURE_RECTANGLE 和 GL_TEXTURE_RECTANGLE_ARB 有什么区别?
  3. 这会影响我读取的缓冲区中的多重采样功能吗?我收集到在所有绘图功能期间都会计算多重采样,所以这应该就像简单地复制结果像素一样?
  4. 如果我想出于调试目的将缓存的内容输出为图像,应该如何处理该方法?
  5. 还有更多方法,我还可以优化 glDrawPixels() 除非使用 FBO 或 PBO?