我想將一些舊的OpenGL代碼翻譯成現代的OpenGL。此代碼正在讀取紋理中的數據並進行顯示。將ARB程序集翻譯成GLSL?
static const char *gl_shader_code =
"!!ARBfp1.0\n"
"TEX result.color, fragment.texcoord, texture[0], RECT; \n"
"END";
GLuint program_id;
glGenProgramsARB(1, &program_id);
glBindProgramARB(GL_FRAGMENT_PROGRAM_ARB, program_id);
glProgramStringARB(GL_FRAGMENT_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, (GLsizei) strlen(gl_shader_code), (GLubyte *) gl_shader_code);
我只是想轉換成GLSL這段代碼:片段着色器使用ARB_fragment_program
命令當前創建。我覺得片段着色器應該是這個樣子:
#version 430 core
uniform sampler2DRect s;
void main(void)
{
gl_FragColor = texture2DRect(s, ivec2(gl_FragCoord.xy), 0);
}
但我不知道幾個細節:
- 這是
texture2DRect
正確使用? - 這是
gl_FragCoord
的正確用法嗎?
使用GL_PIXEL_UNPACK_BUFFER
目標將紋理加入像素緩衝區對象。
很好用。請注意''texture2D'函數在OpenGL 3.3中已被棄用,您應該使用'texture'函數(相同的簽名) – Zouch