我对与 GLSL 中的 texture2D() 和 OpenGL 中的 glTexImage2D() 相关的内部格式感到困惑,当我使用时(注意third
和eighth
参数):
glTexImage2D(GL_TEXTURE_2D, 0,GL_RGBA16F_ARB, WINDOW_SIZE, WINDOW_SIZE, 0, GL_RGBA,
GL_FLOAT, floatDataPtr);
我在nonclampedvalue
glsl 中得到了 sampler2D ,而没有钳制到 [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);
我将clampedvalue
glsl 中的 sampler2D 夹在 [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()?所有的规则是什么?
有人可以帮忙吗?