问题标签 [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.

0 投票
3 回答
5587 浏览

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++ 中显然是不可能的。

0 投票
3 回答
4448 浏览

c++ - 将像素传递到 glTexImage2D() 后会发生什么情况?

例如,如果我创建一个像素数组,如下所示:

glTexImage2D 是使用该引用还是将像素复制到它自己的内存中?

如果答案是前者,那么我应该执行以下操作吗?

0 投票
1 回答
3779 浏览

opengl - glTexImage2D 函数中的边框是什么意思?

border价值是glTexImage2D多少?它是 0 或 1。它决定这个纹理是否有边框?

值在哪里border设置?

0 投票
2 回答
984 浏览

opengl - OpenGL glGetTexImage2d 类型参数?

阅读文档我看到 glGetTexImage2d() 函数有一个“类型”参数。文档说类型参数“指定像素数据的数据类型”,并给出了一些类型的示例,例如 GL_INT、GL_BYTE 等。

但是当图像格式为 GL_RGBA 和 GL_INT 时,这究竟意味着什么?它是每个通道的 int 吗?还是整个颜色的int?如果它是整个颜色的 int ,那么这与 GL_BYTE 真的不一样吗?因为 int 中有 4 个字节,所以每个通道都有一个字节

0 投票
2 回答
14053 浏览

opengl - OpenGL中glTexSubImage和glTexImage函数的区别

这两个功能有什么区别?有什么性能差异吗?

谢谢..

0 投票
2 回答
6475 浏览

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 :

0 投票
2 回答
1550 浏览

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 具有非常“简陋”的图形硬件。

任何帮助将不胜感激。

0 投票
1 回答
1412 浏览

ios - iOS 上的 OpenGL。可以在单独的线程上调用 glTexImage2D 吗?

在 iOS 上,我一直认为不可能通过 NSOperation 子类在单独的线程上创建 OpenGL 纹理 - glTexImage2D。有人可以确认/拒绝。

由于纹理创建可能会挂起 GUI - 糟糕!- 有没有人想出一个他们满意的解决方法?

谢谢,
道格

0 投票
1 回答
2730 浏览

image - Opengl 纹理和字节序

我正在使用带有 GL_LUMINANCE 和 GL_UNSIGNED_BYTE 的 glTexSubImage2D 直接显示来自相机的原始灰度数据 - 而不必手动将其重新打包成 RGB 位图。

我想以 12 或 14 位/像素的更高分辨率模式运行相机。

我可以通过简单地设置来做到这一点,GL_SHORT但是相机以大端序返回数据,而我的 openGL 实现似乎以错误的方式绘制它(在 x86 上)。

有没有一种简单的方法告诉openGL纹理是“错误”的方式?我想避免手动字节交换数据只是为了显示,因为所有其他函数都需要大端数据。

0 投票
2 回答
1095 浏览

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() 之前绑定了纹理,甚至检查了这些调用是否有错误无济于事。

任何建议/指针?有没有其他人尝试过定义自己的纹理格式?

顺便说一句,目前正在使用四边形而不是三角形,这很好,对吧?