OpenGL Shadow Map MultiAmplingC++

Programme in C++. Entwicklerforum
Guest
 OpenGL Shadow Map MultiAmpling

Post by Guest »

Ich wollte die Schattenkarten -Textur mit mehreren Proben < /p>

Ich habe ein Multisample aktiviert: < /li>
< /ol>

Code: Select all

glfwWindowHint(GLFW_SAMPLES, 4);
glEnable(GL_MULTISAMPLE);
< /code>

 Konfigurierte Tiefenkarte Frambuffer und Textur: < /li>
< /ol>
const unsigned int SHADOW_WIDTH = 1024, SHADOW_HEIGHT = 1024;
unsigned int  depthMapFBO;
glGenFramebuffers(1, &depthMapFBO);
// create depth texture
unsigned int depthMapTexture;
glGenTextures(1, &depthMapTexture);
glBindTexture(GL_TEXTURE_2D_MULTISAMPLE, depthMapTexture);
glTexImage2DMultisample(GL_TEXTURE_2D_MULTISAMPLE, 4, GL_DEPTH_COMPONENT,         SHADOW_WIDTH, SHADOW_HEIGHT, GL_TRUE);
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT,   GL_TEXTURE_2D_MULTISAMPLE, depthMapTexture, 0);

glDrawBuffer(GL_NONE);
glReadBuffer(GL_NONE);

glBindFramebuffer(GL_FRAMEBUFFER, 0);
< /code>
3.Configured Dreadtie Tiefe Frambuffer und Textur: < /p>
GLuint resolveFramebuffer;
glGenFramebuffers(1, &resolveFramebuffer);
glBindFramebuffer(GL_FRAMEBUFFER, resolveFramebuffer);

// resolve texture
GLuint resolvedDepthTexture;
glGenTextures(1, &resolvedDepthTexture);
glBindTexture(GL_TEXTURE_2D, resolvedDepthTexture);
glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, SHADOW_WIDTH, SHADOW_HEIGHT, 0,    GL_DEPTH_COMPONENT, GL_FLOAT, nullptr);
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, resolvedDepthTexture, 0);

glBindFramebuffer(GL_FRAMEBUFFER, 0);
In der Schleife Ich setze den Ansichtsfenster Glviewport (0, 0, 1024, 1024) , binden Sie die Tiefenrahmenbuffer, zeichnen Sie die Szene, FrameBuffer entbinden. Dann Bind aufgelöstes Framebiffer und blitzt es: < /p>

Code: Select all

 glBindFramebuffer(GL_READ_FRAMEBUFFER, depthMapFBO);
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, resolveFramebuffer);
glBlitFramebuffer(0, 0, SHADOW_WIDTH, SHADOW_HEIGHT, 0, 0, SHADOW_WIDTH, SHADOW_HEIGHT, GL_DEPTH_BUFFER_BIT, GL_NEAREST);
glBindFramebuffer(GL_FRAMEBUFFER, 0);
Ansichtsfenster Glviewport (0, 0, 1600, 900) , löschen und zeichnen Sie die Szene, Swapbuffers und haben Sie einen schwarzen Bildschirm
Was habe ich falsch gemacht?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post