0

私は OpenGL-ES を初めて使用し、Buck のLearning OpenGL ES for iOS book に取り組み始めました。

第 2 章では単色での三角形の描画について説明し、第 3 章ではテクスチャの使用について説明します。

個人的な学習課題として、サンプル コードを変更して 2 つの三角形を描画しようとしています。1 つはテクスチャ付き、もう 1 つはソリッドです。

非常に基本的な演習のように見えますが、OpenGL-ES の初心者としては難しいことがわかっています。

これまでのところ、私は物事の組み合わせを試してきました。

まず で描く準備をしGLKVertexAttribPosition、次にで描きGLKVertexAttribTexCoord0ます。次に、三角形 1 で頂点バッファーを描画します。

次に、次のようないくつかのことを試しました。

    glDisableVertexAttribArray(GLKVertexAttribTexCoord0);

    GLuint name = self.textureInfo0.name;
    glDeleteTextures(1, &name);

色属性を描画する前に:

[self.vertexBuffer prepareToDrawWithAttrib:GLKVertexAttribColor
                       numberOfCoordinates:3
                              attribOffset:offsetof(SceneVertex, colours)
                              shouldEnable:YES];

スクリーンショットで、左下の三角形のテクスチャが頂点カラー アトリビュートとブレンドされていることがわかります。正方形を作る直角三角形は完全に黒です。

prepareToDrawWithAttribメソッド呼び出しは、主にメソッドを呼び出す Buck のユーティリティ クラスであることに注意してくださいglVertexAttribPointer

ここではGLKitを使用しているため、シェーダーなどは使用しないことに注意してください。

スクリーンショットは次のとおりです。

ここに画像の説明を入力

どんな考えでも大歓迎です。

4

2 に答える 2

0

私のアドバイスの 1 つは、openGLES を開始する場合はライブラリ (Buck のユーティリティ クラスなど) を避けることです。あなたは自分が何をしているのかをよく知っている必要があります。GLKBaseEffect で時間を無駄にしないでください。

Xcode の opengles プロジェクトを開始します。GLKBaseEffect 部分をすべて削除し、シェーダーの使用を開始します。単純なライティングを行う場合は難しくありません。

于 2013-01-31T14:26:38.570 に答える
0

OpenGL でレンダリングされない理由は多数あります。たとえば、間違った巻き方 (時計回りと反時計回り) で 2 番目の三角形を設定しているのではないかと思います。

2 つの三角形の間で色/テクスチャを切り替えてみて、2 番目の三角形でテクスチャを取得できるかどうかを確認します。

それ以外の場合、例にコードがないと、言うのは難しいです。

于 2013-01-19T19:48:01.240 に答える