0

私は開いている gl es と頂点バッファー (VBO) について独学しています。コードを書きました。コードは赤い三角形を 1 つ描画するはずですが、代わりに画面を黒くします。

- (void)drawRect:(CGRect)rect {

// Draw a red triangle in the middle of the screen:
glColor4f(1.0f, 0.0f, 0.0f, 1.0f);
// Setup the vertex data:
typedef struct {
    float x;
    float y;
} Vertex;
const Vertex vertices[] = {{50,50}, {50,150}, {150,50}};
const short indices[3] = {0,1,2};
glGenBuffers(1, &vertexBuffer);
glBindBuffer(GL_ARRAY_BUFFER, vertexBuffer);
glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
NSLog(@"drawrect");
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(3, GL_FLOAT, 0, 0);
// The following line does the actual drawing to the render buffer:
glDrawElements(GL_TRIANGLE_STRIP, 3, GL_UNSIGNED_SHORT,  indices);
glBindRenderbufferOES(GL_RENDERBUFFER_OES, framebuffer);
[eAGLcontext presentRenderbuffer:GL_RENDERBUFFER_OES];
}

ここで vertexBuffer は Gluint 型です。何がうまくいかないのですか?ご協力いただきありがとうございます。

4

2 に答える 2

1

あなたの頂点にはZコンポーネントがありません。試してみてください{{50,50,-100}, {50,150,-100}, {150,50,-100}};(カメラはデフォルトでZ軸を見下ろすので、-Zに入れると画面に表示されます)まだ小さい数値を試してみてください。描画カットオフ距離はあり、設定されていない場合、デフォルトが何であるかわかりません。これが唯一の問題ではないかもしれませんが、すぐに見るだけでわかる唯一の問題です。

于 2013-02-21T07:36:40.443 に答える
0

追加する必要があります

glViewport(0, 0, 320, 480);

フレーム バッファを作成し、コンテキストを設定します。

glDrawElements への呼び出しを次のように置き換えます。

glDrawArrays(GL_TRIANGLE_STRIP, ...);
于 2013-02-21T10:09:45.833 に答える