与GLSL中的texture2D()和OpenGL中的glTexImage2D()相关的内部格式
当我使用时(注意与GLSL中的texture2D()和OpenGL中的glTexImage2D()相关的内部格式,opengl,format,textures,Opengl,Format,Textures,当我使用时(注意third和third参数),我对GLSL中与texture2D()相关的内部格式和OpenGL中与glTexImage2D()相关的内部格式感到困惑: 我得到了glsl中sampler2D的nonchampedValue,但没有钳制到[0,1]: vec4 nonclampedvalue = texture2D(my16floattex2d, texcoord1); vec4 clampedvalue = texuture2D(myunsignedbytetex2d, tex
third
和third
参数),我对GLSL中与texture2D()相关的内部格式和OpenGL中与glTexImage2D()相关的内部格式感到困惑:
我得到了glsl中sampler2D的nonchampedValue
,但没有钳制到[0,1]:
vec4 nonclampedvalue = texture2D(my16floattex2d, texcoord1);
vec4 clampedvalue = texuture2D(myunsignedbytetex2d, texcoord2);
当我使用:
glTexImage2D(GL_TEXTURE_2D, 0,GL_RGBA8, WINDOW_SIZE, WINDOW_SIZE, 0, GL_RGBA,
GL_UNSIGNED_BYTE, byteDataPtr);
我将glsl中sampler2D的clampedvalue
钳制为[0,1]:
vec4 nonclampedvalue = texture2D(my16floattex2d, texcoord1);
vec4 clampedvalue = texuture2D(myunsignedbytetex2d, texcoord2);
所以我的问题是:
下次再仔细看看;就在维基上。用于创建和编辑的。它甚至解释了最后三个参数控制:将数据上传到图像。在我的程序中,似乎调用了函数:
glTexImage2D(GL_TEXTURE_2D,0,GL_RGBA16F_ARB,WINDOW_SIZE,WINDOW_SIZE,0,GL_RGBA,GL_UNSIGNED_BYTE,byteDataPtr)代码>给我一个钳制为[0,1]的值。正如我在中所理解的,它不是在[0.0f,255.0f]之间的某个值吗?@tlh1987:这就是我将您链接到像素传输页面的原因。您给出的OpenGL值介于[0,1]之间。您说过数据是按RGBA顺序排列的,每个值都是一个无符号字节。因此,您告诉OpenGL,您的数据包含存储为规范化无符号字节的整数值。OpenGL所做的一切就是读取数据并按照您所描述的方式对其进行解释,将其存储在可以存储更大数据的纹理中。在我的程序中,似乎调用了以下函数:glTexImage2D(GL_texture_2D,0,GL_RGBA16F_ARB,WINDOW_SIZE,WINDOW_SIZE,0,GL_RGBA,GL_UNSIGNED_BYTE,byteDataPtr)代码>给我一个钳制为[0,1]的值。正如我在中所理解的,它不是在[0.0f,255.0f]之间的某个值吗?@tlh1987:这就是我将您链接到像素传输页面的原因。您给出的OpenGL值介于[0,1]之间。您说过数据是按RGBA顺序排列的,每个值都是一个无符号字节。因此,您告诉OpenGL,您的数据包含存储为规范化无符号字节的整数值。OpenGL所做的只是读取数据并按照您所描述的方式进行解释,将其存储在可以存储更大数据的纹理中。
glTexImage2D(GL_TEXTURE_2D, 0,GL_RGBA16F_ARB, WINDOW_SIZE, WINDOW_SIZE, 0, GL_RGBA,
GL_UNSIGNED_BYTE, byteDataPtr);