作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
以下是部分代码。编译的时候没有问题,但是执行的时候就崩溃了。它打破了 glTexImage3D 的行。 Qt 版本 4.5.3,类 "opengl"继承自 QGLWidget。
void opengl::initializeGL()
{
GLenum err = glewInit();
create_volumetexture();
}
void opengl::create_volumetexture()
{
int w = 256, h = 256, d = 225;
size_t size = w * h * d;
if (dataRGBA)
{
delete dataRGBA;
dataRGBA=NULL;
}
dataRGBA=new GLubyte[4*size];
for (int i=0; i<size; i++)
{
dataRGBA[4*i]=200;
dataRGBA[4*i+1]=0;
dataRGBA[4*i+2]=0;
dataRGBA[4*i+3]=100;
}
glGenTextures(1, &volume_texture);
// bind 3D texture target
glBindTexture(GL_TEXTURE_3D, volume_texture);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER);
glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER);
glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_BORDER);
glPixelStorei(GL_UNPACK_ALIGNMENT,1);
glTexImage3D(GL_TEXTURE_3D_EXT, 0, GL_RGBA, w, h, d, 1, /*GL_LUMINANCE*/GL_RGBA, GL_UNSIGNED_BYTE,dataRGBA);
}
最佳答案
您为 border 参数提供了一个非零值,但为此分配的缓冲区并没有考虑到它,因此 glTexImage3D 会发生缓冲区读取溢出。
此外,d 不是 2 的幂,因此您遇到了另一个问题。您可以使用带有空指针的 glTexImage3D 来初始化纹理,并使用 glTexSubImage3D 来填充实际内容——传递给 glTexSubImage 的数据也可以是非 2 的幂格式(但纹理本身必须用 的幂初始化2 个维度……然后还有边界)。
关于qt - glTexImage3D 在 QT 中崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4415393/
因为,例如,glBufferData可以报告 GL_OUT_OF_MEMORY 错误,我预计 glTexImage这样做,但事实并非如此。 大概可能会用完纹理内存,那么我该如何检测该事件? 最佳答
为什么 glTexImage1D、glTexImage2D 和 glTexImage3D 函数需要内部格式(即 GL_RGBA8、GL_R32UI 等)和像素格式? (GL_RGBA,GL_RED_I
当我使用 glTexImage2D 绑定(bind)我的图像时,它呈现得很好。 首先是片段着色器中的代码: uniform sampler2D tex; in vec2 tex_coord; // m
我是一名优秀的程序员,十分优秀!