저는 현재 일부 OpenGL을 배우고 있으며 큐브에 2 가지 다른 텍스처 (확산 및 반사)를 적용하려고합니다. 문제는 텍스처 유닛 0의 첫 번째 텍스처 만 접근 할 수 있다는 것입니다. 두 샘플러는 두 개의 다른 샘플러를 사용하지 않고 그것을 사용하는 것 같습니다.
LWJGL 멀티 텍스처가 작동하지 않습니다.
두 샘플러 유니폼을 모두 1로 지정하더라도 첫 번째 (확산 텍스처)가 사용됩니다. 나는 뭔가를 간과 한 것 같아요.
는
내 init()
의 관련 부분은 다음과 같습니다
ShaderProgram.bind(shaderProgram);
{
//set other uniforms as projectionMatrix, viewMatrix, etc.
...
glBindVertexArray(vaoID);
glDrawElements(GL_TRIANGLES, 36, GL_UNSIGNED_BYTE, 0);
glBindVertexArray(0);
}
ShaderProgram.unbind();
이
texture
, textureSpecular
, shaderProgram
및 vaoID
글로벌 있습니다 : 다음과 같이
texture = Texture.loadTextureFromFile("res/texture/stone_07_diffuse.jpg");
textureSpecular = Texture.loadTextureFromFile("res/texture/stone_07_specular.jpg");
shaderProgram = new ShaderProgram();
shaderProgram.attachVertexShader("res/shader/LightTest.vsh");
shaderProgram.attachFragmentShader("res/shader/LightTest.fsh");
shaderProgram.link()
ShaderProgram.bind(shaderProgram);
{
shaderProgram.setUniform("materialDiffuseTexture", 0);
shaderProgram.setUniform("materialSpecularTexture", 1);
...
}
ShaderProgram.unbind();
Texture.setActiveTextureUnit(0);
Texture.bind(texture);
Texture.setActiveTextureUnit(1);
Texture.bind(textureSpecular);
render()
방법의 관련 부분이 보인다 변수. 프래그먼트 쉐이더에서 선언 유니폼 : 내가 잘못합니까 무엇
uniform sampler2D materialDiffuseTexture;
uniform sampler2D materialSpecularTexture;
?
우리 모두에게 발생합니다. 2 일 전이 주제에 대한 튜토리얼을 올린 Youtube Channel "ThinMatrix"를 확인해보십시오. – Joehot200
감사합니다. 나는 그것을 조사 할 것이다. – tobs