2012-04-06 4 views
1

GLKitを使用してピクセルを描画しています。私は正常に私が持っている場合は座標(10、10)のピクセルを描画することができますGLKit:[描画ピクセル] GLfloat配列を初期化する

glClearColor(0.65f, 0.65f, 0.65f, 1.0f); 
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 

// Prepare the effect for rendering 
[self.effect prepareToDraw]; 

GLfloat points[] = 
{ 
    10.0f, 10.0f, 
}; 

glClearColor(1.0f, 1.0f, 0.0f, 1.0f); 

GLuint bufferObjectNameArray; 
glGenBuffers(1, &bufferObjectNameArray); 
glBindBuffer(GL_ARRAY_BUFFER, bufferObjectNameArray); 

glBufferData(
      GL_ARRAY_BUFFER, 
      sizeof(points), 
      points, 
      GL_STATIC_DRAW); 

glEnableVertexAttribArray(GLKVertexAttribPosition); 

glVertexAttribPointer(
         GLKVertexAttribPosition, 
         2, 
         GL_FLOAT, 
         GL_FALSE, 
         2*4, 
         NULL); 
glDrawArrays(GL_POINTS, 0, 1); 

しかし、私はどのように多くの実行時に決定したいと私はピクセルを描画したい場所を正確に、私はこれを試してみましたが、それが描画されますピクセルが(10、0)の場合、ここで間違っています:

glClearColor(0.65f, 0.65f, 0.65f, 1.0f); 
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 

// Prepare the effect for rendering 
[self.effect prepareToDraw]; 

GLfloat *points = (GLfloat*)malloc(sizeof(GLfloat) * 2); 
for (int i=0; i<2; i++) { 
    points[i] = 10.0f; 
} 

glClearColor(1.0f, 1.0f, 0.0f, 1.0f); 

GLuint bufferObjectNameArray; 
glGenBuffers(1, &bufferObjectNameArray); 
glBindBuffer(GL_ARRAY_BUFFER, bufferObjectNameArray); 

glBufferData(
      GL_ARRAY_BUFFER, 
      sizeof(points), 
      points, 
      GL_STATIC_DRAW); 

glEnableVertexAttribArray(GLKVertexAttribPosition); 

glVertexAttribPointer(
         GLKVertexAttribPosition, 
         2, 
         GL_FLOAT, 
         GL_FALSE, 
         2*4, 
         NULL); 
glDrawArrays(GL_POINTS, 0, 1); 

親切にお手伝いします。

編集: 問題 は、実際に問題がある:私の賭けが問題ということになります

GLfloat points[] = 
{ 
    10.0f, 10.0f, 
}; 

GLfloat *points = (GLfloat*)malloc(sizeof(GLfloat) * 2); 
for (int i=0; i<2; i++) { 
    points[i] = 10.0f; 
} 

答えて

0

:私は違いが何であるかを把握することはできませんglBufferDataデータコール内のsizeof(points)です。この場合、ポインタのサイズが返されます。つまり4バイト(またはこのようなもの)です。 の配列のサイズは、mallocコードで計算した値と同じになります。