[英]3D PerspectiveCamera Rendering Depth libgdx OpenGL ES 2.0
[英]OpenGL ES 2.0 - Rendering depth buffer
我已經閱讀了一些教程,並試圖圍繞OpenGL ES 2.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
請為我指出正確的方向,或者每當我在假設中犯錯時。
教程是最好的,我在OpenGL ES 2.0中對陰影貼圖沒有發現太多
libGDX中存在一個錯誤,該錯誤要求glTexImage2D
紋理參數不為空(這意味着必須始終有一些本地紋理數據要上傳)。 此更改已修復: https : //github.com/libgdx/libgdx/pull/228 。 這將是0.9.8之后的版本的一部分(最有可能是0.9.9版本)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.