私はいくつかのチュートリアルを読み、OpenGLES2.0に頭を悩ませようとしています。デプスバッファを作成しようとすると、JVMがクラッシュします。ところで、私はLibGDXフレームワークを使用しています。
IntBuffer depthBuffer = BufferUtils.newIntBuffer(1);
// AFAIK this puts 1 texture name into depthBuffer.
Gdx.gl20.glGenTextures(1, depthBuffer);
int depthBufferValue = depthBuffer.get();
// I now bind the texture, so I can use it.
Gdx.gl20.glBindTexture(GL20.GL_TEXTURE_2D, depthBufferValue);
何をするのかglTexImage2D
わかりませんが、奥行きのあるテクスチャが生成されるはずです。
次の行でJVMがクラッシュします
Gdx.gl20.glTexImage2D(GL20.GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, Gdx.graphics.getWidth(), Gdx.graphics.getHeight(), 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, BufferUtils.newIntBuffer(1));
次の行はNullPointerException
glTexImage2D
最後のパラメータとして何を入れるべきかわかりません。私は彼らが置いたiOSの例を見てきましたNULL
。
Gdx.gl20.glTexImage2D(GL20.GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, Gdx.graphics.getWidth(), Gdx.graphics.getHeight(), 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, null);
残りのコード
// This code should attach the depth texture into frame buffer
IntBuffer depthFrameBuffer = BufferUtils.newIntBuffer(1);
glGenFramebuffers(1, depthFrameBuffer);
int depthFrameBufferValue = depthBuffer.get();
glBindFramebuffer(GL_FRAMEBUFFER, depthFrameBufferValue);
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, depthFrameBufferValue, 0);
// I dont know what should I call next or what type of shader should I use
私に正しい方向を示してください、または私が私の仮定を間違えたときはいつでも。
チュートリアルが最適です。OpenGLES2.0のシャドウマップについてはあまり見つかりませんでした。