Я смущен теневым отображением. Вот то, что я понял (после шагов, не работают:))
Как получить прибыль (пожалуйста, не запутывайтесь о коде, это примерно, потому что я пишу на Яве):
1. Create empty depthTexture (mine is 1024x1024) with parameters
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE, GL_COMPARE_R_TO_TEXTURE)
and
glTexImage2D (GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, ширина, высота, 0, GL_DEPTH_COMPONENT, GL_FLOAT, GL_NULL)
2. Create FBO and attach that texture to it
glFramebufferTexture (GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, depthTexture, 0)
3. Setup new projection and view matrix for lighting camera
Я использовал то же самое в качестве своей главной камеры только с другим, связывает, потому что сцена выглядит лучше в нем (я испытал его, таким образом, нет никакой проблемы... , я предполагаю ..).
4. Create new little shader to determinate gl_Position for FBO and modify the main shader with fancy stuff (bias matrix * lightCamera matrix * vertex, sampler2Dshadow and more)
5. Of course uniform everything and do something.
And now RENDER LOOP
1. Of course uniform everything and do something(again).
2. Bind FBO, bind little shader, glViewport(0, 0, 1024, 1024)
, colorMask to false, clear depth buffer, glCullFace(GL_FRONT)
, glBindTexture(GL_TEXTURE_2D, 0)
3. Render everything using only vertex position attribs completely for nothing
4. Unbind FBO, rebind program to main shader (that one with fancy stuff), glViewport
, enable colorMask, glCullFace(GL_BACK)
5. Render the scene normally without even thinking about "How the hell main shader gonna get sampler2DShadow
because we dont bind it, dont uniform it, and don't even touch it"
6. Watch countless glitches, bugs and pixel orgy
На самом деле я попробовал к униформе depthTexture к образцу, но у меня есть черный экран только. И даже если я не отдаю FBO, я получаю ту же самую картину, когда я делаю это.
Кто-то может объяснить, что я пропускаю?
Я чувствую себя подобно использованию шейдера разбросанная структура дважды: как разбросанная структура и как depthTexture, но я не знаю, как дать его это depthTexture.