내가 GLSL 0에 전달할 모든 정수, 나는 2 초과 1로 채워진 배열을 보냈지 만 정수 그래서 나는 단지 질감을 얻을 텍스처를 선택하기위한 OpenGL을 보내는 모든 0을 읽을 수은 이상하게도 모든 0
String fragmentshader="#version 330 core"
+ System.getProperty("line.separator")
+"out vec4 outcolor;"
+"flat in int yup;"
+"in vec2 supertextcoords;"
+"uniform sampler2D texture1;"
+"uniform sampler2D texture2;"
+"void main(){"
+"vec4 texturev1=texture2D(texture1, supertextcoords);"
+"vec4 texturev2=texture2D(texture2, supertextcoords);"
+"vec4 final=texture2D(texture2, supertextcoords);"
+ "if(yup==1){final=texturev1; outcolor=final;}else if(yup==0){"
+"final=texturev2; outcolor=final;}else{"
+ "final=vec4(0,1,0,0); outcolor=final;}"
나는의 int를 보내는 방법은
glEnableVertexAttribArray(2);
glVertexAttribIPointer(2,1,GL_INT,0,(vertices.length+textcoord.length)*4);
glDrawArrays(GL_TRIANGLES, 0, vertices.length/4);
glDisableVertexAttribArray(2);
012,351,641입니다 : 여기
String vertexshader = "#version 330 core"
+ System.getProperty("line.separator")
+ "in vec4 vertexin;"
+ "in vec2 textcoords;"
+ " in int yup;"
+ "uniform mat4 orthogonal;"
+ "out vec2 supertextcoords;"
+ "out int yup1;"
+ "void main(){"
+ "gl_Position = orthogonal * vertexin ;"
+ "supertextcoords = textcoords;"
+ "yup1=yup;"
+ "}";
이 조각 쉐이더입니다 : 여기에 0으로 풀어서 나의 버텍스 쉐이더입니다
10 번호는 큐브의 OpenGL로 전송로되어있다. 각 크기에 대한 질감을 결정하려면 삼각형 당 1 개의 번호 (뒷면이 없음). 두 번째 숫자는 첫 번째 숫자와 같으므로 텍스처를 동일하게 만듭니다. 하지만 texturev2이 실험은 vec4 (0,1,0,0)이었다 내가 원하는 used.The texure합니다 적이다; 숫자가 2이고 매핑 된 범위를 벗어 났기 때문입니다. 왜? 더 많은 자료가 필요하면 멀리 물어보십시오.
당신은 출력으로'yup1'을 가지고 있지만 FS의 입력으로 해당하는'yup1'가 없습니다. – genpfault
@genpfault는 대답으로 그 제출하십시오 나는 그것을 선택합니다. 고맙습니다! 내가 떠나야하기 때문에 나는 그것을 tommorow 할 것이다. –