0
이 GLSL 쉐이더 잘 컴파일,하지만 난 때) (glUseProgram 그것을 활성화하기 위해; OpenGL 내게 잘못된 값 오류를 준다 :이 Invalide 값은 GLSL 버전 EmitVertex을 사용하는 경우 150
@vert
#version 150
uniform mat4 projectionmodelview_matrix_;
in vec3 global_position_;
void main(void) {
gl_Position = projectionmodelview_matrix_ * vec4(global_position_, 1.0);
EmitVertex();
gl_Position = projectionmodelview_matrix_ * vec4(global_position_, 1.0);
EmitVertex();
gl_Position = projectionmodelview_matrix_ * vec4(global_position_, 1.0);
EmitVertex();
EndPrimitive();
}
@frag
#version 150
out vec4 out_color_;
void main(void) {
out_color_ = vec4(1.0, 0.0, 0.0, 1.0);
}
그러나 정점을 방출하는 부품을 제거하면 작동합니다. 내가 도대체 뭘 잘못하고있는 겁니까?
아하, 지오메트리 셰이더는 버텍스 쉐이더와 다르다? 나는 항상 geometry shader가 vertex를 복사 할 수있는 버텍스 쉐이더이기도하지만 –
@ViktorSehr 아니요, [geometry shader] (http://www.opengl.org/wiki/Geometry_Shader)는 * after the vertex 셰이더는 각 프리미티브에 대해 한 번 호출되며 (이 프리미티브가 버텍스 셰이더를 통과 한 후) 기본 프리미티브에서 새로운 프리미티브를 생성 할 수 있습니다. –
어떻게 이런 식으로 놓칠 수 있니? :) –