簡體   English   中英

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM