1
조각 쉐이더에 표시되는 질감을 변경하고 내가 여기 이 작업에 대해 조금 혼란 스러워요 것은내가 쉐이더 2 개 텍스처를 전달하는 데 노력하고
GLuint textures;
GLuint textures1;</code>
glGenTextures(1,&textures);
glGenTextures(1,&textures1);
glBindTexture(GL_TEXTURE_2D,textures);
glTexImage2D(GL_TEXTURE_2D,0,GL_RGB,256,256,0,GL_RGB,GL_UNSIGNED_BYTE,texImg);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glBindTexture(GL_TEXTURE_2D,textures1);
glTexImage2D(GL_TEXTURE_2D,0,GL_RGB,256,256,0,GL_RGB,GL_UNSIGNED_BYTE,texImg1);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glBindTexture(GL_TEXTURE_2D,textures1);
GLuint location1=glGetUniformLocation(programObjectFloor,"Tex1");
GLuint location2=glGetUniformLocation(programObjectFloor,"Tex2");
glActiveTexture(GL_TEXTURE1);
glBindTexture(GL_TEXTURE_2D,textures1);
glUniform1i(location2, 1);
glActiveTexture(GL_TEXTURE0);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D,textures);
glUniform1i(location1, 0);
꼭지점 쉐이더는
인 OpenGL은 코드 I 선을 변경할 때attribute vec4 position;
attribute vec4 texture;
uniform mat4 MVP;
varying vec4 ptexture;
void main()
{
ptexture = texture;
gl_Position = MVP * position;
}
프래그먼트 쉐이더는
varying vec4 ptexture;
uniform sampler2D Tex1;
uniform sampler2D Tex2;
uniform bool swit;
void main()
{
gl_FragColor = texture2D(Tex1,ptexture.st);
}
0
gl_FragColor = texture2D(Tex2,ptexture.st);
아직도 첫 번째 질감이 표시됩니다,하지만 난 아래 줄을 주석 때, 두 번째 텍스처는 이런 일이 왜 설명해주십시오 수 표시됩니다?
// glActiveTexture(GL_TEXTURE0);
// glEnable(GL_TEXTURE_2D);
// glBindTexture(GL_TEXTURE_2D,textures);
// glUniform1i(location1, 0);
glUseProgram을 (를) 호출하는 위치는 어디입니까? –
'# version' 지시어는 어디에 있습니까? – genpfault