c++ - 以重复模式绑定(bind)纹理

标签 c++ opengl textures octree

我正在尝试在 OpenGL 中的 3D 纹理中存储八叉树,以便使用 Cg 在 GPU 上使用,来自 GPU Gems 2 中的一章,可在此处找到 http://http.developer.nvidia.com/GPUGems2/gpugems2_chapter37.html 。但是我得到的结果是不正确的。我认为这是因为我创建八叉树的方式。

在该章的附录中,它说“如果我们以重复模式(GL_REPEAT)绑定(bind)间接池纹理(八叉树纹理)...”。

这只是意味着将过滤器和包装设置为重复,还是我需要做其他事情?这是我到目前为止的代码

glGenTextures(1, &octree_texture);
glBindTexture(GL_TEXTURE_3D, octree_texture);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_MAG_FILTER, GL_REPEAT);
glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_MIN_FILTER, GL_REPEAT);
glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_WRAP_R, GL_REPEAT);
glTexImage3D(GL_TEXTURE_3D, 0, GL_RGBA, WIDTH, HEIGHT, DEPTH, 0, GL_RGBA, GL_UNSIGNED_BYTE, octreeData);

感谢您的帮助:)

最佳答案

过滤器不能重复,这会产生GL错误,只有换行模式可以是GL_REPEAT,这可能就是书上的意思。

关于c++ - 以重复模式绑定(bind)纹理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6939809/

相关文章:

c++ - 是否有一个智能指针在其目标在 C++ 中被销毁时自动清空

c++ - g++ 链接器找不到 const 成员函数

c++ - fstream 跳过第一个字符

opengl - gluLookAt解释吗?

c++ - Opengl - 如何从像素缓冲区加载纹理

cuda - CUDA纹理对象支持3 channel 纹理吗?

c++ - 在堆栈上创建 C++ 对象,努力不分配

c - opengl+glut glutPostRedisplay在哪里?

opengl - 视频的GPU内存分配

iphone - 异步纹理加载 iPhone OpenGL ES 2