2012-12-21 65 views
1

我是新的Open GL,我需要創建一個由屏幕上的形狀組成的應用程序。這些形狀由相同的立方體組成。我不知道如何在着色器中分別着色每個立方體,因爲座標是通過緩衝區作爲單個屬性傳入的?如何爲單獨的3D立方體着色

glGenVertexArraysOES(1, &_vertexArray); 
glBindVertexArrayOES(_vertexArray); 

glGenBuffers(1, &_vertexBuffer); 
glBindBuffer(GL_ARRAY_BUFFER, _vertexBuffer); 
glBufferData(GL_ARRAY_BUFFER, 1527 * sizeof(GLfloat), arrayOfVerticies, GL_STATIC_DRAW); 

glEnableVertexAttribArray(GLKVertexAttribPosition); 
glVertexAttribPointer(GLKVertexAttribPosition, 3, GL_FLOAT, GL_FALSE, 12, BUFFER_OFFSET(0)); 

glBindVertexArrayOES(0); 

着色器:

attribute vec4 position; 
attribute vec3 normal; 

varying lowp vec4 colorVarying; 

uniform mat4 modelViewProjectionMatrix; 
uniform mat3 normalMatrix; 

void main() 
{ 
vec3 eyeNormal = normalize(normalMatrix * normal); 
vec3 lightPosition = vec3(0.0, 0.0, 1.0); 
vec4 diffuseColor = vec4(0.4, 0.4, 1.0, 1.0); 

float nDotVP = max(0.0, dot(eyeNormal, normalize(lightPosition))); 

colorVarying = diffuseColor * nDotVP; 

gl_Position = modelViewProjectionMatrix * position; 
} 
+0

請發佈兩個着色器的代碼。 – keaukraine

回答

1

可在發送的顏色作爲屬性。

更多詳細信息可參見here