Zu Testzwecken versuche ich, die Position jedes Eckpunkts auf Null zu setzen. Aber wenn ich versuche, mehr als zwei Dimensionen zu ändern (und egal welche), stürzt der Shader still ab. Kann mir jemand sagen, was hier vor sich geht? Mein Code:GLSL: Das Ändern von mehr als zwei Vertex-Dimensionen führt zum Absturz des Shaders
static const float vertices[12] = {
-0.5,-0.5, 0.0,
0.5,-0.5, 0.0,
-0.5, 0.5, 0.0,
0.5, 0.5, 0.0,
};
glVertexAttribPointer(vertexHandle, 3, GL_FLOAT, GL_FALSE, 0, (const GLvoid*)vertices);
glEnableVertexAttribArray(vertexHandle);
glUniformMatrix4fv(mvpMatrixHandle, 1, GL_FALSE, (const GLfloat*)&modelViewProjection.data[0]);
glDrawArrays(GL_POINTS, 0, 4);
Und mein Shader:
attribute vec4 vertexPosition;
uniform mat4 modelViewProjectionMatrix;
void main()
{
vec4 temp = vertexPosition;
temp.x = 0.0;
temp.y = 0.0;
temp.z = 0.0; // Can set any 2 dimensions (e.g. x and y or y and z)
// to zero, but not all three or the shader crashes.
gl_Position = modelViewProjectionMatrix * vec4(temp.xyz, 1.0);
}
Was bedeutet "Shader stürzt ab"? Shader können nicht abstürzen; vielleicht meinst du, dass es undefiniertes Verhalten hat? – Luca
Sorry, was ich damit meine ist, dass die iOS App (die auf einem iPhone 4S läuft) einfriert (ohne Stack Trace oder irgendetwas), aber ich gehe davon aus, dass es der Shader ist, der dafür verantwortlich ist. – Josh
Könnten Sie Ihren gesamten C-Code posten? Da ist etwas mehr los als im Shader. –