【发布时间】:2012-04-25 11:49:48
【问题描述】:
我对 GLSL 中的 texture2D() 和 OpenGL 中的 glTexImage2D() 相关的内部格式感到困惑,当我使用时(注意 third 和 eighth 参数):
glTexImage2D(GL_TEXTURE_2D, 0,GL_RGBA16F_ARB, WINDOW_SIZE, WINDOW_SIZE, 0, GL_RGBA,
GL_FLOAT, floatDataPtr);
我在 glsl 中得到了 sampler2D 的 nonclampedvalue ,但没有钳制到 [0, 1]:
vec4 nonclampedvalue = texture2D(my16floattex2d, texcoord1);
当我使用时:
glTexImage2D(GL_TEXTURE_2D, 0,GL_RGBA8, WINDOW_SIZE, WINDOW_SIZE, 0, GL_RGBA,
GL_UNSIGNED_BYTE, byteDataPtr);
我得到了 glsl 中 sampler2D 的 clampedvalue 被钳制到 [0, 1]:
vec4 clampedvalue = texuture2D(myunsignedbytetex2d, texcoord2);
所以我的问题是这样的:
-
当像这样调用 glTexImage2D 时我会在 glsl 中得到什么值(钳位或不钳位):
glTexImage2D(GL_TEXTURE_2D, 0,GL_RGBA8, WINDOW_SIZE, WINDOW_SIZE, 0, GL_RGBA, GL_FLOAT, floatDataPtr); -
当像这样调用 glTexImage2D 时我会在 glsl 中得到什么值(钳位或不钳位):
glTexImage2D(GL_TEXTURE_2D, 0,GL_RGBA16F_ARB, WINDOW_SIZE, WINDOW_SIZE, 0, GL_RGBA, GL_UNSIGNED_BYTE, byteDataPtr); 由于我在OpenGL官方网站上找不到详细信息,在不同内部格式以及不同类型(如上面提到的GL_FLOAT或GL_UNSIGNED_BYTE)数据的sampler2D纹理中将返回什么值调用 glTexImage2D() 时传递给纹理?所有的规则是什么?
有人可以帮忙吗?
【问题讨论】: