【发布时间】:2018-09-27 07:07:32
【问题描述】:
我得到了一个浮点值在 0.0 - 1.0 范围内的数组(高度图),但纹理返回黑色或只是红色我尝试了内部和源格式的多种组合,但似乎没有任何效果。我目前只给我一个红色纹理的代码是:
glGenTextures(1, &texure);
glBindTexture(GL_TEXTURE_2D, texure);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexImage2D(GL_TEXTURE_2D, 0, GL_R32F, w, h, 0, GL_RED, GL_FLOAT, data);
【问题讨论】:
-
您是否尝试在每个命令后检查
glGetError()代码? -
用上面的当前代码,没有没有错误。
-
但是您发布的图像看起来像一个高度图,您期望的输出到底是什么?
-
你在着色器代码中做了什么?如果您执行
gl_FragColor = texture_color;之类的操作,则绿色和蓝色通道将始终为0。您必须执行gl_FragColor = texture_color.rrra;之类的操作您可以显示片段着色器吗?
标签: c++ opengl graphics glsl swizzling