问题标签 [glteximage2d]
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.
c++ - 如何在 glTexImage2D 中使用动态大小的纹理数组?
目前,我可以加载我创建的静态大小的纹理。在这种情况下,它是 512 x 512。
此代码来自标题:
glTexImage2D的用法如下:
这是我填充数组的方式(粗略的例子,不是我的代码的精确副本):
如何更改它以便不需要 TEXTURE_WIDTH 和 TEXTURE_HEIGHT?也许我可以使用指针样式数组并动态分配内存......
编辑:
我想我看到了问题,在 C++ 中它真的无法完成。Budric 指出的解决方法是使用一维数组,但使用所有 3 个维度相乘来表示索引:
要访问,例如 1/2/3 的 x/y/z,您需要执行以下操作:
但是,问题是,我认为该glTexImage2D
功能不支持这一点。谁能想到一个适用于这个 OpenGL 函数的解决方法?
编辑2:
注意 OpenGL 开发人员,这可以通过使用一维像素数组来克服......
[0]:第 0 列 > [1]:第 0 行 > [2]:通道 0 ... n > [n]:第 1 行 ... n > [n]:第 1 列 .. n
...无需使用 3 维数组。在这种情况下,我不得不使用这项工作,因为 3 维数组在 C++ 中显然是不可能的。
c++ - 将像素传递到 glTexImage2D() 后会发生什么情况?
例如,如果我创建一个像素数组,如下所示:
glTexImage2D 是使用该引用还是将像素复制到它自己的内存中?
如果答案是前者,那么我应该执行以下操作吗?
opengl - glTexImage2D 函数中的边框是什么意思?
的border
价值是glTexImage2D
多少?它是 0 或 1。它决定这个纹理是否有边框?
值在哪里border
设置?
opengl - OpenGL glGetTexImage2d 类型参数?
阅读文档我看到 glGetTexImage2d() 函数有一个“类型”参数。文档说类型参数“指定像素数据的数据类型”,并给出了一些类型的示例,例如 GL_INT、GL_BYTE 等。
但是当图像格式为 GL_RGBA 和 GL_INT 时,这究竟意味着什么?它是每个通道的 int 吗?还是整个颜色的int?如果它是整个颜色的 int ,那么这与 GL_BYTE 真的不一样吗?因为 int 中有 4 个字节,所以每个通道都有一个字节
opengl - OpenGL中glTexSubImage和glTexImage函数的区别
这两个功能有什么区别?有什么性能差异吗?
谢谢..
android - android NDK 可能实现最快的 2D 帧速率,包括我的尝试,有更好的选择吗?
android NDK 可能实现最快的 2D 帧速率,包括我的尝试,有更好的选择吗?
我使用 NDK 和 OpenGL ES 2.0 将帧显示为 GL_TRIANGLE_STRIP 上的纹理。这是在 HTC Desire 上完成的,硬件与 Nexus One 相同。我尝试加载多个 GL_RGBA 纹理并在纹理之间切换,因为单个纹理的正常填充率低得令人失望:
- 1 个纹理:4.78 fps
- 2 个纹理:19.68 fps
- 3 种纹理:20.18 fps
- 4 种纹理:28.52 fps
- 5 种纹理:29.01 fps
- 6 种纹理:30.32 fps
我认为即使是 30.32 fps RGBA 仍然太慢。
那么这是实现最快 2D 帧速率(具有相同质量)的方法吗?有什么建议可以加快速度吗?
以下是相关代码,它基于 hello-gl2 NDK 示例:
=== GL2JNIView.java:
=== gl_code.cpp :
macos - OpenGL vers >=2.0 要求纹理尺寸是 4 像素的倍数?
我正在使用 OpenGL 纹理开发 Mac 应用程序,这些纹理是使用 glTexImage2D 从磁盘上的图像文件加载的。
根据文档,对于 OpenGL 版本 >= 2.0,纹理可以是任意大小。(对于 <2.0 的版本,x 和 y 维度都必须是 2 的幂。)
但是,如果我的图像尺寸不是 4 的偶数倍,我的纹理会很差。我已经搜索和搜索,但找不到有关此要求的任何文档。事实上,“红皮书”明确指出纹理尺寸可以是版本 >= 2.0 的任何值。
我错过了什么?
而且,将纹理转换为下一个最大的二维幂是否有性能优势?我的应用程序需要 Mac OS 10.6.6 或更高版本,它应该可以在任何 Intel Mac 上运行。一些早期的英特尔 mac 具有非常“简陋”的图形硬件。
任何帮助将不胜感激。
ios - iOS 上的 OpenGL。可以在单独的线程上调用 glTexImage2D 吗?
在 iOS 上,我一直认为不可能通过 NSOperation 子类在单独的线程上创建 OpenGL 纹理 - glTexImage2D。有人可以确认/拒绝。
由于纹理创建可能会挂起 GUI - 糟糕!- 有没有人想出一个他们满意的解决方法?
谢谢,
道格
image - Opengl 纹理和字节序
我正在使用带有 GL_LUMINANCE 和 GL_UNSIGNED_BYTE 的 glTexSubImage2D 直接显示来自相机的原始灰度数据 - 而不必手动将其重新打包成 RGB 位图。
我想以 12 或 14 位/像素的更高分辨率模式运行相机。
我可以通过简单地设置来做到这一点,GL_SHORT
但是相机以大端序返回数据,而我的 openGL 实现似乎以错误的方式绘制它(在 x86 上)。
有没有一种简单的方法告诉openGL纹理是“错误”的方式?我想避免手动字节交换数据只是为了显示,因为所有其他函数都需要大端数据。
opengl - 通过 Glut 为 OpenGL 自定义纹理映射
我要做的是创建易于加载和使用的自定义模型和纹理文件。基本上,这些文件是代表 XYZ 和 RGB 值的浮点列表。比如:0.5 0.234 0.1 ... ...
问题是我无法让我的浮点数组为纹理工作。这是我定义数组的方式:
float* textureMap;
这是我初始化它的方式:
const int SIZE = (128*128*3);
textureMap = (float*)malloc(sizeof(textureMap)*SIZE);
for (int i =0; i<SIZE; i++) {
textureMap[i] = 0.0f;
}
现在使用 Glut,我创建了一个窗口,允许我使用数据绘制和填充数组,并且您可以看到所有 RGB 值都已初始化为 0.0f,所以我至少希望看到我的对象是黑色的,但它仍然存在默认的灰色,并且永远不会变成与我的纹理数组中相同的颜色。
这是我创建纹理的调用:
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 130, 130, 0, GL_RGB, GL_FLOAT, textureMap);
我已经按照 OpenGl 官方网页上的指南将宽度和高度设为 2^n + 2,但考虑到我尝试构建浮点数组的方式,我不确定这是否正确。
我还尝试调用 glGetError() 没有成功(也就是说,没有引发错误,我确保可以通过将宽度和高度设置为 -1 来引发错误)。
我已确保在调用 glBegin() 之前绑定了纹理,甚至检查了这些调用是否有错误无济于事。
任何建议/指针?有没有其他人尝试过定义自己的纹理格式?
顺便说一句,目前正在使用四边形而不是三角形,这很好,对吧?