私はOpenGL ES 1.0で遊び始めました。私はいくつかの(初心者の)問題にぶつかりました:三角で記述された立方体に正方形のテクスチャをマップしようとしました。今正方形のテクスチャを三角形にマッピングする
// Turn necessary features on
glEnable(GL_TEXTURE_2D);
glEnable(GL_BLEND);
glBlendFunc(GL_ONE, GL_SRC_COLOR);
glEnable(GL_CULL_FACE);
//glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
// Bind the number of textures we need, in this case one.
glGenTextures(1, &texture[0]);
glBindTexture(GL_TEXTURE_2D, texture[0]);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
//Drawing code
static GLfloat rot = 0.0;
static const Vertex3D vertices[] = {
-1.0f,-1.0f,-1.0f, //0 00
1.0f,-1.0f,-1.0f, //1 10
1.0f, 1.0f,-1.0f, //2 11
-1.0f, 1.0f,-1.0f, //3 01
};
static const int vertexCnt = 3 * 2;
static const GLubyte cube[] = {
3,0,2,
1,2,0,
};
static const GLfloat texCoords[] = {
0,1,
0,0,
1,1,
1,0,
1,1,
0,0,
};
glClearColor(0.0, 0.0, 0.0, 1.0);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glTranslatef(0.0f, 0.0f, -3.0f);
glBindTexture(GL_TEXTURE_2D, texture[0]);
glEnableClientState(GL_VERTEX_ARRAY);
//glEnableClientState(GL_COLOR_ARRAY);
glEnableClientState(GL_NORMAL_ARRAY);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glEnable(GL_COLOR_MATERIAL);
glTexCoordPointer(2, GL_FLOAT, 0, texCoords);
glVertexPointer(3, GL_FLOAT, 0, vertices);
//glColorPointer(4, GL_FLOAT, 0, colors);
glNormalPointer(GL_FLOAT, 0, normals);
glDrawElements(GL_TRIANGLES, vertexCnt, GL_UNSIGNED_BYTE, cube);
glDisableClientState(GL_VERTEX_ARRAY);
//glDisableClientState(GL_COLOR_ARRAY);
glDisableClientState(GL_NORMAL_ARRAY);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
三角形に正方形のテクスチャをマッピングする際、膨大な数の試みの後、私はちょうどそれが他の側面のために働くことができません... はケースのための親指のいくつかのルールがありますか?
EDIT:マッピングをどのように行うべきかを考えます。しかし、この例(1つの顔)では動作しません。誰かが私が正しくマッピングしたかどうかを確認してください(他のコードが動作していると仮定して)?
感謝
:ここ
キューブを表示するように更新あなたのコードである(I無効に顔を確認するために殺処分して、いくつかの巻線問題がある可能性があります)同じ頂点データを再利用しながらキューブを作成します。あなたのキューブを6個の別個のクワッド= 24個の頂点として8個の代わりに再加工します。 –'法線'配列が間違っていると思われます。通常のポインタの内容は何ですか?各顔の法線を変えていますか? –
法線はちょっと間違っていますが、テクスチャマッピングに影響があるかどうかはわかりませんでした。照明にしか影響しないと思っていました。ありがとう – sinek