Skip to content

Commit 233c7a8

Browse files
committed
setDepthStencilTargetを修正、パック形式はGL_DEPTH_STENCIL_ATTACHMENTを指定
1 parent adca5e1 commit 233c7a8

File tree

3 files changed

+19
-7
lines changed

3 files changed

+19
-7
lines changed

src/hsp3dish/gameplay/src/Base.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -297,11 +297,11 @@ using std::va_list;
297297
#else
298298
#error "Unsupported Apple Device"
299299
#endif
300-
#elif EMSCRIPTEN
300+
#elif __EMSCRIPTEN__
301301
#define GLEW_STATIC
302302
#include <GL/glew.h>
303303
#define OPENGL_ES
304-
#define USE_VAO
304+
#define GP_USE_VAO
305305
#endif
306306

307307
// Graphics (GLSL)

src/hsp3dish/gameplay/src/DepthStencilTarget.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,14 @@ DepthStencilTarget* DepthStencilTarget::create(const char* id, Format format, un
5050
__gl_error_code = glGetError();
5151
if ( __gl_error_code != GL_NO_ERROR)
5252
{
53+
#ifdef __EMSCRIPTEN__
54+
glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_STENCIL, width, height);
55+
}
56+
57+
__gl_error_code = glGetError();
58+
if ( __gl_error_code != GL_NO_ERROR)
59+
{
60+
#endif
5361
const char* extString = (const char*)glGetString(GL_EXTENSIONS);
5462

5563
if (strstr(extString, "GL_OES_packed_depth_stencil") != 0)

src/hsp3dish/gameplay/src/FrameBuffer.cpp

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -221,9 +221,6 @@ void FrameBuffer::setRenderTarget(RenderTarget* target, unsigned int index, GLen
221221

222222
// Restore the FBO binding
223223
GL_ASSERT( glBindFramebuffer(GL_FRAMEBUFFER, _currentFrameBuffer->_handle) );
224-
225-
// FIXME: Without this, setDepthStencilTarget will fail
226-
glGetError();
227224
}
228225
}
229226

@@ -261,14 +258,21 @@ void FrameBuffer::setDepthStencilTarget(DepthStencilTarget* target)
261258
GL_ASSERT( glBindFramebuffer(GL_FRAMEBUFFER, _handle) );
262259

263260
// Attach the render buffer to the framebuffer
264-
GL_ASSERT( glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, _depthStencilTarget->_depthBuffer) );
265261
if (target->isPacked())
266262
{
267-
GL_ASSERT( glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_RENDERBUFFER, _depthStencilTarget->_depthBuffer) );
263+
GL_ASSERT( glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, GL_RENDERBUFFER, _depthStencilTarget->_depthBuffer) );
268264
}
269265
else if (target->getFormat() == DepthStencilTarget::DEPTH_STENCIL)
270266
{
267+
#ifdef __EMSCRIPTEN__
268+
GP_WARN("Unexpected status %d %zu %zu", target->isPacked(), _depthStencilTarget->_depthBuffer, _depthStencilTarget->_stencilBuffer);
269+
GL_ASSERT( glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, _depthStencilTarget->_depthBuffer) );
271270
GL_ASSERT( glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_RENDERBUFFER, _depthStencilTarget->_stencilBuffer) );
271+
#endif
272+
}
273+
else
274+
{
275+
GL_ASSERT( glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, _depthStencilTarget->_depthBuffer) );
272276
}
273277

274278
// Check the framebuffer is good to go.

0 commit comments

Comments
 (0)