Probleme mit ivec2 im Fragmentshader
-
Hallo,
ich habe einen minimalen shader zusammengebaut der auch funktioniert, solange ich vec2 bei der deklaration im Vertexshader verwende:
Im c++ Programm
//Initialisierung int *vertexTexcoordPositions = new int [6]; vertexTexcoordPositions[0] =0; vertexTexcoordPositions[1] =0 ; vertexTexcoordPositions[2] =1; vertexTexcoordPositions[3] =0; vertexTexcoordPositions[4] =0; vertexTexcoordPositions[5] =1; glGenBuffers(1, &vertexPositionsBufferObject); GLuint vertexTexcoordPositionsBufferObject; glBindBuffer(GL_ARRAY_BUFFER, vertexTexcoordPositionsBufferObject); glBufferData(GL_ARRAY_BUFFER, sizeof(int)*6,vertexTexcoordPositions, GL_DYNAMIC_DRAW ); glBindBuffer(GL_ARRAY_BUFFER, 0); //in der Zeichenschleife glPolygonMode(GL_FRONT, GL_LINE); glPolygonMode(GL_BACK, GL_LINE); glBindBuffer(GL_ARRAY_BUFFER, vertexTexcoordPositionsBufferObject); glEnableVertexAttribArray(glGetAttribLocation (myShader->getProgram(), "vertexPosition")); int help =glGetAttribLocation (myShader->getProgram(), "vertexPosition"); glVertexAttribPointer(help, 2, GL_INT, GL_FALSE, 0, BUFFER_OFFSET(0)); glDrawArrays(GL_TRIANGLES, 0, 3); glDisableVertexAttribArray(glGetAttribLocation (myShader->getProgram(), "vertexPosition"));
Im vertex Shader
#version 330 #extension GL_EXT_gpu_shader4 : enable in vec2 vertexPosition; void main() { gl_Position = vec4(vertexPosition,1, 1); }
Im Fragmentshader
#extension GL_EXT_gpu_shader4 : enable void main() { gl_FragColor = vec4(1.0, 1.0, 1.0, 0.0); }
Zu sehen ist ein Dreieck aus Linien. Genau so wie es sein soll.
http://imageshack.us/photo/my-images/40/26561552.jpg/Ändere ich im Vertexshader aber die folgende Zeile:
in vec2 vertexPosition;
in
in ivec2 vertexPosition;
also in integer Vectoren (Ich übergebe ja auch integer im C++ Programm an den shader.)
So ist das Dreieck viel zu gross:http://imageshack.us/photo/my-images/43/72896500.jpg/
Wenn ich das Dreieck verschoben anzeige sieht man, dass die Linien nahezu ins unendliche gehen.
Wodurch entsteht dieses Problem bei der Verwendung von Ganzzahl-Vektoren (ivec2)?
Und wie kann ich Ganzzahlvektoren verwenden ohne diese Probleme zu bekommen?(Das Problem tritt nicht auf, wenn ich keine VBOs verwende und Zusatzdaten als Uniform-Variablen in Form von ivec2 übergebe)