Я прочитал несколько руководств и попытался понять 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
man glTexImage2D
и первое попадание: opengl.org/sdk/docs /man/xhtml/glTexImage2D.xml объясняет, для чего нужен этот последний параметр — данные изображения (и многие из них в вашем случае). (man
— это команда справочных страниц Unix/Linux.) - person P.T.   schedule 30.01.2013NULL
и не передавать какие-либо данные здесь. Кроме того, я не знаю, что эквивалентно в android/libgdx? - person jellyfication   schedule 30.01.2013