まず第一に、これは重複した質問であり、別の質問をチェックしますが、助けにはなりませんでした。私はキャンバスシステムからGL10に自分のアンドロイドゲームを変換しようとしています。私はたくさんのグーグル・プレイヤーの後、演奏家のためにそれをすることにしました。とにかく、テクスチャを読み込んで描画するクラスを作成しようとしました。問題は、ブルースクリーン上に全体的に黒く表示されるテクスチャです。 私は確信していません私はメッシュや何かを作成せずにテクスチャを描画することができますが、これは私がやろうとしているものです。自分のサイズで2Dテクスチャを描画しようとしているだけなので、メッシュは必要ありません。ここに私のコードは次のとおりです。OpenGL es glDrawTexfOES()2Dテクスチャはレンダリングされません
onDrawFrameが
@Override
public void onDrawFrame(GL10 gl) {
gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
gl.glLoadIdentity();
//gl.glTranslatef(0, 0, -4);
**CODE B DRAWING**
// bgNightID is the ID of texture was loaded.
textureStorage.DrawTexture(bgNightID, 50,50,0,(short)4000,(short)638);
// Drawing background right here which is shows up black.
}
CODE
@Override public void onSurfaceCreated(GL10 gl, EGLConfig config) { gl.glClearColor(0.0f, 0.0f, 1.0f, 0.2f); gl.glClearDepthf(1.0f); gl.glViewport(0, 0, 800, 480); gl.glShadeModel(GL10.GL_SMOOTH); gl.glEnable(GL10.GL_DEPTH_TEST); gl.glEnable(GL10.GL_TEXTURE_2D); gl.glDepthFunc(GL10.GL_LEQUAL); gl.glMatrixMode(GL10.GL_PROJECTION); gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_NICEST); //gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_FASTEST); gl.glLoadIdentity(); // This is the class where I load and draw my textures. textureStorage = new TextureStorage(gl); //I'm loading a texture. **CODE A TEXTURE LOADER** bgNightID = textureStorage.Load(BitmapFactory.decodeResource(context.getResources(),R.drawable.bg_game)); //This is where I load my units variables. Nothing to do with it. RenderingFunctions.InitUnits(this); }
をonSurfaceCreatedテクスチャLOADER
public int glLoad(Bitmap bitmap){ if (gl == null){ Log.e(TAG, "Failed to load resource. Context/GL is NULL");return -1; } int textureName = -1; gl.glGenTextures(1, TexIDStorage, 0); textureName = TexIDStorage[0]; Log.d(TAG, "Generated texture: " + textureName); gl.glBindTexture(GL10.GL_TEXTURE_2D, textureName); 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); //gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, GL10.GL_NEAREST); gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_S, GL10.GL_CLAMP_TO_EDGE); gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_T, GL10.GL_CLAMP_TO_EDGE); gl.glTexEnvf(GL10.GL_TEXTURE_ENV, GL10.GL_TEXTURE_ENV_MODE, GL10.GL_REPLACE); GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bitmap, 0); int error = gl.glGetError(); if (error != GL10.GL_NO_ERROR){ Log.e(TAG, "GL Texture Load Error: " + error); }else Log.d(TAG, "Loaded texture: " + textureName); return textureName; }
CODEのB描画
public void DrawTexture(int TexutreID, float X, float Y, float Z, short Width, short Height){ gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT); //gl.glColor4f(1.0f, 1.0f, 1.0f, 0.5f); gl.glBindTexture(GL10.GL_TEXTURE_2D, TexIDStorage[TexutreID]); ((GL11Ext) gl).glDrawTexfOES(X, Y, Z, Width, Height); }
私はGL10へば完全に新たなんだと、問題が何であるかを把握することはできません、それは私が欠けているものです。だから誰かが私を助けることができるなら、それは素晴らしいだろう。 givim時間ありがとう!
よく努力した後、私はあなたが大事だと考えました。私は2つの問題のこの力のための機会を与えなかったし、これのために私は私の人生の1日を失った。今それは完璧に動作します。 –