GLSL로 텍스처 매핑을하고 싶습니다. 하지만 내 코드는 쉐이더를 사용하지 않는다고 생각합니다.GLSL 텍스처 매핑
내 코드에 문제가 있습니다 무엇 주요
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, _textureId[0]);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glUniform1i(glGetUniformLocation(shader.ShaderProgram,"img"),0);
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 0.0f);
glVertex3f(-2.5f, -2.5f, 2.5f);
glTexCoord2f(1.0f, 0.0f);
glVertex3f(2.5f, -2.5f, 2.5f);
glTexCoord2f(1.0f, 1.0f);
glVertex3f(2.5f, -2.5f, -2.5f);
glTexCoord2f(0.0f, 1.0f);
glVertex3f(-2.5f, -2.5f, -2.5f);
glEnd();
에서
#version 330
out vec2 texcoord;
void main()
{
gl_Position=gl_ModelViewProjectionMatrix*gl_Vertex;
texcoord=gl_MultiTexCoord0.xy;
}
Fragment.frag
#version 330
uniform sampler2D img;
in vec2 texcoord;
void main()
{
vec4 texcolor = texture2D(img,texcoord);
gl_FragColor=texcolor;
}
텍스처 매핑 부분
Vertex.vert : 여기 내 코드는 무엇입니까? 전체 코드 :
전나무 링크를 보면 shader.CompileShaders()가 호출됩니다. mainloop하기 전에. 그 안에 glUseProgram()이 있습니다. 하지만 언급 한 기능을 어떻게 사용할 수 있습니까? 간단하면 쓸 수 있습니까? – peaceman
각 glActiveTexture (GL_TEXTURE0) 호출 전에 glUsePrograme()를 호출해야합니다. glBindTexture (GL_TEXTURE_2D, m_TextureMainInput); glUniform1i (텍스처 [0] [displayMode], 0); 이것들은 어디에 있습니까? – Sung
나는 그것들을 추가했지만 변화가 없다. 코드를 추가하든 아니든 코드가 정상적으로 실행되는지, 셰이더가 사용되지 않는지에 대한 변경은 없습니다. 너는 그 (것)들을 배우기 위하여 저에게 인터넷 연결을 줄 수 있는가? – peaceman