テクスチャマッピングの概念を理解しようとしています。テクスチャを正方形(2つの三角形で構成)にマップしようとしました。しかし、画像の左上のピクセルだけが正方形に完全にレンダリングされます。なぜこれが起こるのですか?Android上のOpenGL - テクスチャマッピング - 画面上の左上のピクセルのみが表示される
private float[] _vertices = {0.0f, 0.0f,0.0f, 1.0f,
60.0f, 0.0f, 0.0f, 1.0f,
0.0f, 60.0f, 0.0f, 1.0f,
60.0f, 60.0f, 0.0f, 1.0f};
テクスチャCOORDS - -
private float _texCoords[] = {0.0f, 1.0f,
1.0f, 1.0f,
0.0f, 0.0f,
1.0f, 0.0f };
私は私のために同じ問題..しかし、そのソリューションdoesntの仕事とanother post
初期セットアップ
gl.glDisable(GL10.GL_DITHER); //Disable dithering (NEW)
gl.glEnable(GL10.GL_TEXTURE_2D); //Enable Texture Mapping
gl.glShadeModel(GL10.GL_SMOOTH); //Enable Smooth Shading
gl.glClearColor(0.0f, 0.0f, 0.0f, 0.5f); //Black Background
gl.glClearDepthf(1.0f); //Depth Buffer Setup
gl.glEnable(GL10.GL_DEPTH_TEST); //Enables Depth Testing
gl.glDepthFunc(GL10.GL_LEQUAL); //The Type Of Depth Testing To Do
頂点COORDSを見てきましたテクスチャ読み込みメソッド -
public void loadGLTexture(GL10 gl, Context context) {
//Get the texture from the Android resource directory
InputStream is = context.getResources().openRawResource(com.mhoapps.bugswatter.R.drawable.crate);
Bitmap bitmap = null;
try {
//BitmapFactory is an Android graphics utility for images
bitmap = BitmapFactory.decodeStream(is);
} finally {
//Always clear and close
try {
is.close();
is = null;
} catch (IOException e) {
}
}
// Generate one texture pointer...
gl.glGenTextures(1, _textures, 0);
int mTextureId = _textures[0];
// ...and bind it to our array
gl.glBindTexture(GL10.GL_TEXTURE_2D, mTextureId);
// Create Nearest Filtered Texture
gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER,
GL10.GL_LINEAR);
gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER,
GL10.GL_LINEAR);
// Use the Android GLUtils to specify a two-dimensional texture image
// from our bitmap
GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bitmap, 0); //Clean up
bitmap.recycle();
}
最後にdrawメソッド
public void draw(GL10 gl) {
//Bind the texture according to the set texture filter
//gl.glLoadIdentity();
gl.glTranslatef(0.0f, 0.0f, -3.0f);
gl.glEnable(GL10.GL_TEXTURE_COORD_ARRAY);
gl.glBindTexture(GL10.GL_TEXTURE_2D, _textures[0]);
gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
gl.glVertexPointer(4, GL10.GL_FLOAT, 0, _currentVertexBuffer);
gl.glTexCoordPointer(2, GL10.GL_FLOAT, 0, _bugTexBuffer1);
gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, 4);
gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);
gl.glDisableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
}
関連するコードを表示してください。それがなければ私たちは推測することができます。そして、別の投稿に言及するときは、少なくともそれにリンクしてください。 – Bart
[記載された質問](http://stackoverflow.com/questions/7920118/opengl-on-android-texture-mapping-only-top-left-pixel-visible) –
FYI:OpenGLでは、初期設定。特に、そこに設定した状態は、実際に描画関数に設定する必要があります。 – datenwolf