mirror of
https://github.com/blawar/GLideN64.git
synced 2024-07-04 10:03:36 +00:00
Correct FBO texture formats for different GL versions.
This commit is contained in:
parent
9a991ba550
commit
1653069329
|
@ -117,7 +117,7 @@ void DepthBuffer::_initDepthBufferTexture(FrameBuffer * _pBuffer, CachedTexture
|
||||||
_pTexture->mirrorT = 0;
|
_pTexture->mirrorT = 0;
|
||||||
_pTexture->realWidth = _pTexture->width;
|
_pTexture->realWidth = _pTexture->width;
|
||||||
_pTexture->realHeight = _pTexture->height;
|
_pTexture->realHeight = _pTexture->height;
|
||||||
_pTexture->textureBytes = _pTexture->realWidth * _pTexture->realHeight * sizeof(float);
|
_pTexture->textureBytes = _pTexture->realWidth * _pTexture->realHeight * fboFormats.depthFormatBytes;
|
||||||
textureCache().addFrameBufferTextureSize(_pTexture->textureBytes);
|
textureCache().addFrameBufferTextureSize(_pTexture->textureBytes);
|
||||||
|
|
||||||
#ifdef GL_MULTISAMPLING_SUPPORT
|
#ifdef GL_MULTISAMPLING_SUPPORT
|
||||||
|
@ -140,9 +140,9 @@ void DepthBuffer::_initDepthBufferTexture(FrameBuffer * _pBuffer, CachedTexture
|
||||||
{
|
{
|
||||||
glBindTexture(GL_TEXTURE_2D, _pTexture->glName);
|
glBindTexture(GL_TEXTURE_2D, _pTexture->glName);
|
||||||
if (_pBuffer != NULL)
|
if (_pBuffer != NULL)
|
||||||
glTexImage2D(GL_TEXTURE_2D, 0, DEPTH_COMPONENT_FORMAT, _pBuffer->m_pTexture->realWidth, _pBuffer->m_pTexture->realHeight, 0, GL_DEPTH_COMPONENT, DEPTH_COMPONENT_TYPE, NULL);
|
glTexImage2D(GL_TEXTURE_2D, 0, fboFormats.depthInternalFormat, _pBuffer->m_pTexture->realWidth, _pBuffer->m_pTexture->realHeight, 0, GL_DEPTH_COMPONENT, fboFormats.depthType, NULL);
|
||||||
else
|
else
|
||||||
glTexImage2D(GL_TEXTURE_2D, 0, DEPTH_COMPONENT_FORMAT, video().getWidth(), video().getHeight(), 0, GL_DEPTH_COMPONENT, DEPTH_COMPONENT_TYPE, NULL);
|
glTexImage2D(GL_TEXTURE_2D, 0, fboFormats.depthInternalFormat, video().getWidth(), video().getHeight(), 0, GL_DEPTH_COMPONENT, fboFormats.depthType, NULL);
|
||||||
|
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
||||||
|
|
|
@ -72,15 +72,4 @@ extern const GLuint depthImageUnit;
|
||||||
void DepthBuffer_Init();
|
void DepthBuffer_Init();
|
||||||
void DepthBuffer_Destroy();
|
void DepthBuffer_Destroy();
|
||||||
|
|
||||||
#ifdef GLES2
|
|
||||||
#define DEPTH_COMPONENT_FORMAT GL_DEPTH_COMPONENT
|
|
||||||
#define DEPTH_COMPONENT_TYPE GL_UNSIGNED_INT
|
|
||||||
#elif defined (GLES3) || defined (GLES3_1)
|
|
||||||
#define DEPTH_COMPONENT_FORMAT GL_DEPTH_COMPONENT32F
|
|
||||||
#define DEPTH_COMPONENT_TYPE GL_FLOAT
|
|
||||||
#else
|
|
||||||
#define DEPTH_COMPONENT_FORMAT GL_DEPTH_COMPONENT
|
|
||||||
#define DEPTH_COMPONENT_TYPE GL_FLOAT
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -18,14 +18,6 @@
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
#ifndef GLES2
|
|
||||||
const GLint monohromeInternalformat = GL_R8;
|
|
||||||
const GLenum monohromeformat = GL_RED;
|
|
||||||
#else
|
|
||||||
const GLint monohromeInternalformat = GL_LUMINANCE;
|
|
||||||
const GLenum monohromeformat = GL_LUMINANCE;
|
|
||||||
#endif // GLES2
|
|
||||||
|
|
||||||
#ifndef GLES2
|
#ifndef GLES2
|
||||||
class FrameBufferToRDRAM
|
class FrameBufferToRDRAM
|
||||||
{
|
{
|
||||||
|
@ -155,24 +147,19 @@ void FrameBuffer::_initTexture(u16 _format, u16 _size, CachedTexture *_pTexture)
|
||||||
_pTexture->realHeight = _pTexture->height;
|
_pTexture->realHeight = _pTexture->height;
|
||||||
_pTexture->textureBytes = _pTexture->realWidth * _pTexture->realHeight;
|
_pTexture->textureBytes = _pTexture->realWidth * _pTexture->realHeight;
|
||||||
if (_size > G_IM_SIZ_8b)
|
if (_size > G_IM_SIZ_8b)
|
||||||
_pTexture->textureBytes *= 4;
|
_pTexture->textureBytes *= fboFormats.colorFormatBytes;
|
||||||
|
else
|
||||||
|
_pTexture->textureBytes *= fboFormats.monochromeFormatBytes;
|
||||||
textureCache().addFrameBufferTextureSize(_pTexture->textureBytes);
|
textureCache().addFrameBufferTextureSize(_pTexture->textureBytes);
|
||||||
}
|
}
|
||||||
|
|
||||||
void FrameBuffer::_setAndAttachTexture(u16 _size, CachedTexture *_pTexture)
|
void FrameBuffer::_setAndAttachTexture(u16 _size, CachedTexture *_pTexture)
|
||||||
{
|
{
|
||||||
glBindTexture(GL_TEXTURE_2D, _pTexture->glName);
|
glBindTexture(GL_TEXTURE_2D, _pTexture->glName);
|
||||||
#ifdef GLES2
|
|
||||||
if (_size > G_IM_SIZ_8b)
|
if (_size > G_IM_SIZ_8b)
|
||||||
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, _pTexture->realWidth, _pTexture->realHeight, 0, GL_RGB, GL_UNSIGNED_SHORT_5_6_5, NULL);
|
glTexImage2D(GL_TEXTURE_2D, 0, fboFormats.colorInternalFormat, _pTexture->realWidth, _pTexture->realHeight, 0, fboFormats.colorFormat, fboFormats.colorType, NULL);
|
||||||
else
|
else
|
||||||
glTexImage2D(GL_TEXTURE_2D, 0, monohromeInternalformat, _pTexture->realWidth, _pTexture->realHeight, 0, monohromeformat, GL_UNSIGNED_BYTE, NULL);
|
glTexImage2D(GL_TEXTURE_2D, 0, fboFormats.monochromeInternalFormat, _pTexture->realWidth, _pTexture->realHeight, 0, fboFormats.monochromeFormat, fboFormats.monochromeType, NULL);
|
||||||
#else
|
|
||||||
if (_size > G_IM_SIZ_8b)
|
|
||||||
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, _pTexture->realWidth, _pTexture->realHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
|
|
||||||
else
|
|
||||||
glTexImage2D(GL_TEXTURE_2D, 0, monohromeInternalformat, _pTexture->realWidth, _pTexture->realHeight, 0, monohromeformat, GL_UNSIGNED_BYTE, NULL);
|
|
||||||
#endif
|
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
||||||
|
|
||||||
|
@ -215,12 +202,12 @@ void FrameBuffer::init(u32 _address, u32 _endAddress, u16 _format, u16 _size, u1
|
||||||
if (_size > G_IM_SIZ_8b)
|
if (_size > G_IM_SIZ_8b)
|
||||||
glTexStorage2DMultisample(GL_TEXTURE_2D_MULTISAMPLE, config.video.multisampling, GL_RGBA8, m_pTexture->realWidth, m_pTexture->realHeight, false);
|
glTexStorage2DMultisample(GL_TEXTURE_2D_MULTISAMPLE, config.video.multisampling, GL_RGBA8, m_pTexture->realWidth, m_pTexture->realHeight, false);
|
||||||
else
|
else
|
||||||
glTexStorage2DMultisample(GL_TEXTURE_2D_MULTISAMPLE, config.video.multisampling, monohromeInternalformat, m_pTexture->realWidth, m_pTexture->realHeight, false);
|
glTexStorage2DMultisample(GL_TEXTURE_2D_MULTISAMPLE, config.video.multisampling, fboFormats.monochromeInternalFormat, m_pTexture->realWidth, m_pTexture->realHeight, false);
|
||||||
#else
|
#else
|
||||||
if (_size > G_IM_SIZ_8b)
|
if (_size > G_IM_SIZ_8b)
|
||||||
glTexImage2DMultisample(GL_TEXTURE_2D_MULTISAMPLE, config.video.multisampling, GL_RGBA8, m_pTexture->realWidth, m_pTexture->realHeight, false);
|
glTexImage2DMultisample(GL_TEXTURE_2D_MULTISAMPLE, config.video.multisampling, GL_RGBA8, m_pTexture->realWidth, m_pTexture->realHeight, false);
|
||||||
else
|
else
|
||||||
glTexImage2DMultisample(GL_TEXTURE_2D_MULTISAMPLE, config.video.multisampling, monohromeInternalformat, m_pTexture->realWidth, m_pTexture->realHeight, false);
|
glTexImage2DMultisample(GL_TEXTURE_2D_MULTISAMPLE, config.video.multisampling, fboFormats.monochromeInternalFormat, m_pTexture->realWidth, m_pTexture->realHeight, false);
|
||||||
#endif
|
#endif
|
||||||
m_pTexture->frameBufferTexture = CachedTexture::fbMultiSample;
|
m_pTexture->frameBufferTexture = CachedTexture::fbMultiSample;
|
||||||
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D_MULTISAMPLE, m_pTexture->glName, 0);
|
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D_MULTISAMPLE, m_pTexture->glName, 0);
|
||||||
|
@ -876,7 +863,7 @@ void FrameBufferToRDRAM::Init()
|
||||||
m_pTexture->textureBytes = m_pTexture->realWidth * m_pTexture->realHeight * 4;
|
m_pTexture->textureBytes = m_pTexture->realWidth * m_pTexture->realHeight * 4;
|
||||||
textureCache().addFrameBufferTextureSize(m_pTexture->textureBytes);
|
textureCache().addFrameBufferTextureSize(m_pTexture->textureBytes);
|
||||||
glBindTexture( GL_TEXTURE_2D, m_pTexture->glName );
|
glBindTexture( GL_TEXTURE_2D, m_pTexture->glName );
|
||||||
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, m_pTexture->realWidth, m_pTexture->realHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
|
glTexImage2D(GL_TEXTURE_2D, 0, fboFormats.colorInternalFormat, m_pTexture->realWidth, m_pTexture->realHeight, 0, fboFormats.colorFormat, fboFormats.colorType, NULL);
|
||||||
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
|
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
|
||||||
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
|
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
|
||||||
glBindTexture(GL_TEXTURE_2D, 0);
|
glBindTexture(GL_TEXTURE_2D, 0);
|
||||||
|
@ -1061,12 +1048,12 @@ void DepthBufferToRDRAM::Init()
|
||||||
textureCache().addFrameBufferTextureSize(m_pDepthTexture->textureBytes);
|
textureCache().addFrameBufferTextureSize(m_pDepthTexture->textureBytes);
|
||||||
|
|
||||||
glBindTexture( GL_TEXTURE_2D, m_pColorTexture->glName );
|
glBindTexture( GL_TEXTURE_2D, m_pColorTexture->glName );
|
||||||
glTexImage2D(GL_TEXTURE_2D, 0, GL_R8, m_pColorTexture->realWidth, m_pColorTexture->realHeight, 0, GL_RED, GL_UNSIGNED_BYTE, NULL);
|
glTexImage2D(GL_TEXTURE_2D, 0, fboFormats.monochromeInternalFormat, m_pColorTexture->realWidth, m_pColorTexture->realHeight, 0, fboFormats.monochromeFormat, fboFormats.monochromeType, NULL);
|
||||||
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST );
|
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST );
|
||||||
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST );
|
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST );
|
||||||
|
|
||||||
glBindTexture( GL_TEXTURE_2D, m_pDepthTexture->glName );
|
glBindTexture( GL_TEXTURE_2D, m_pDepthTexture->glName );
|
||||||
glTexImage2D(GL_TEXTURE_2D, 0, DEPTH_COMPONENT_FORMAT, m_pDepthTexture->realWidth, m_pDepthTexture->realHeight, 0, GL_DEPTH_COMPONENT, GL_FLOAT, NULL);
|
glTexImage2D(GL_TEXTURE_2D, 0, fboFormats.depthInternalFormat, m_pDepthTexture->realWidth, m_pDepthTexture->realHeight, 0, GL_DEPTH_COMPONENT, fboFormats.depthType, NULL);
|
||||||
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST );
|
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST );
|
||||||
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST );
|
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST );
|
||||||
|
|
||||||
|
@ -1193,7 +1180,7 @@ void RDRAMtoFrameBuffer::Init()
|
||||||
m_pTexture->textureBytes = m_pTexture->realWidth * m_pTexture->realHeight * 4;
|
m_pTexture->textureBytes = m_pTexture->realWidth * m_pTexture->realHeight * 4;
|
||||||
textureCache().addFrameBufferTextureSize(m_pTexture->textureBytes);
|
textureCache().addFrameBufferTextureSize(m_pTexture->textureBytes);
|
||||||
glBindTexture( GL_TEXTURE_2D, m_pTexture->glName );
|
glBindTexture( GL_TEXTURE_2D, m_pTexture->glName );
|
||||||
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, m_pTexture->realWidth, m_pTexture->realHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
|
glTexImage2D(GL_TEXTURE_2D, 0, fboFormats.colorInternalFormat, m_pTexture->realWidth, m_pTexture->realHeight, 0, fboFormats.colorFormat, fboFormats.colorType, NULL);
|
||||||
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
|
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
|
||||||
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
|
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
|
||||||
glBindTexture(GL_TEXTURE_2D, 0);
|
glBindTexture(GL_TEXTURE_2D, 0);
|
||||||
|
|
|
@ -427,7 +427,7 @@ void OGLRender::_setBlendMode() const
|
||||||
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
LOG(LOG_VERBOSE, "Unhandled blend mode=%x", gDP.otherMode.l >> 16);
|
//LOG(LOG_VERBOSE, "Unhandled blend mode=%x", gDP.otherMode.l >> 16);
|
||||||
glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA );
|
glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA );
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -1153,12 +1153,103 @@ void OGLRender::clearColorBuffer(float *_pColor )
|
||||||
glEnable( GL_SCISSOR_TEST );
|
glEnable( GL_SCISSOR_TEST );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FBOTextureFormats fboFormats;
|
||||||
|
|
||||||
|
void FBOTextureFormats::init()
|
||||||
|
{
|
||||||
|
#ifdef GLES2
|
||||||
|
monochromeInternalFormat = GL_RGB;
|
||||||
|
monochromeFormat = GL_RGB;
|
||||||
|
monochromeType = GL_UNSIGNED_SHORT_5_6_5;
|
||||||
|
monochromeFormatBytes = 2;
|
||||||
|
|
||||||
|
const char * extensions = (const char *)glGetString(GL_EXTENSIONS);
|
||||||
|
|
||||||
|
if (strstr((const char *)glGetString(GL_RENDERER), "Mali-400") != NULL)
|
||||||
|
{
|
||||||
|
if (strstr(extensions, "GL_OES_rgb8_rgba8") != NULL) {
|
||||||
|
colorInternalFormat = GL_RGBA;
|
||||||
|
colorFormat = GL_RGBA;
|
||||||
|
colorType = GL_UNSIGNED_BYTE;
|
||||||
|
colorFormatBytes = 4;
|
||||||
|
} else {
|
||||||
|
colorInternalFormat = GL_RGB;
|
||||||
|
colorFormat = GL_RGB;
|
||||||
|
colorType = GL_UNSIGNED_SHORT_5_6_5;
|
||||||
|
colorFormatBytes = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
depthInternalFormat = GL_DEPTH_COMPONENT;
|
||||||
|
depthFormat = GL_DEPTH_COMPONENT;
|
||||||
|
depthType = GL_UNSIGNED_INT;
|
||||||
|
depthFormatBytes = 2;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (strstr(extensions, "GL_OES_rgb8_rgba8") != NULL) {
|
||||||
|
colorInternalFormat = GL_RGBA8_OES;
|
||||||
|
colorFormat = GL_RGBA;
|
||||||
|
colorType = GL_UNSIGNED_BYTE;
|
||||||
|
colorFormatBytes = 4;
|
||||||
|
} else {
|
||||||
|
colorInternalFormat = GL_RGB5_A1;
|
||||||
|
colorFormat = GL_RGBA;
|
||||||
|
colorType = GL_UNSIGNED_SHORT_5_5_5_1;
|
||||||
|
colorFormatBytes = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (strstr(extensions, "GL_OES_depth24") != NULL) {
|
||||||
|
depthInternalFormat = GL_DEPTH_COMPONENT24_OES;
|
||||||
|
depthFormat = GL_DEPTH_COMPONENT;
|
||||||
|
depthType = GL_UNSIGNED_INT;
|
||||||
|
depthFormatBytes = 3;
|
||||||
|
} else {
|
||||||
|
depthInternalFormat = GL_DEPTH_COMPONENT16;
|
||||||
|
depthFormat = GL_DEPTH_COMPONENT;
|
||||||
|
depthType = GL_UNSIGNED_INT;
|
||||||
|
depthFormatBytes = 2;
|
||||||
|
}
|
||||||
|
#elif defined(GLES3) || defined (GLES3_1)
|
||||||
|
colorInternalFormat = GL_RGBA;
|
||||||
|
colorFormat = GL_RGBA;
|
||||||
|
colorType = GL_UNSIGNED_BYTE;
|
||||||
|
colorFormatBytes = 4;
|
||||||
|
|
||||||
|
monochromeInternalFormat = GL_RED;
|
||||||
|
monochromeFormat = GL_RED;
|
||||||
|
monochromeType = GL_UNSIGNED_BYTE;
|
||||||
|
monochromeFormatBytes = 1;
|
||||||
|
|
||||||
|
depthInternalFormat = GL_DEPTH_COMPONENT32F;
|
||||||
|
depthFormat = GL_DEPTH_COMPONENT;
|
||||||
|
depthType = GL_FLOAT;
|
||||||
|
depthFormatBytes = 4;
|
||||||
|
#else
|
||||||
|
colorInternalFormat = GL_RGBA;
|
||||||
|
colorFormat = GL_RGBA;
|
||||||
|
colorType = GL_UNSIGNED_BYTE;
|
||||||
|
colorFormatBytes = 4;
|
||||||
|
|
||||||
|
monochromeInternalFormat = GL_RED;
|
||||||
|
monochromeFormat = GL_RED;
|
||||||
|
monochromeType = GL_UNSIGNED_BYTE;
|
||||||
|
monochromeFormatBytes = 1;
|
||||||
|
|
||||||
|
depthInternalFormat = GL_DEPTH_COMPONENT;
|
||||||
|
depthFormat = GL_DEPTH_COMPONENT;
|
||||||
|
depthType = GL_FLOAT;
|
||||||
|
depthFormatBytes = 4;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
void OGLRender::_initExtensions()
|
void OGLRender::_initExtensions()
|
||||||
{
|
{
|
||||||
LOG(LOG_VERBOSE, "OpenGL version string: %s\n", glGetString(GL_VERSION));
|
LOG(LOG_VERBOSE, "OpenGL version string: %s\n", glGetString(GL_VERSION));
|
||||||
LOG(LOG_VERBOSE, "OpenGL vendor: %s\n", glGetString(GL_VENDOR));
|
LOG(LOG_VERBOSE, "OpenGL vendor: %s\n", glGetString(GL_VENDOR));
|
||||||
LOG(LOG_VERBOSE, "OpenGL renderer: %s\n", glGetString(GL_RENDERER));
|
LOG(LOG_VERBOSE, "OpenGL renderer: %s\n", glGetString(GL_RENDERER));
|
||||||
|
|
||||||
|
fboFormats.init();
|
||||||
|
|
||||||
#ifndef GLES2
|
#ifndef GLES2
|
||||||
GLint majorVersion = 0;
|
GLint majorVersion = 0;
|
||||||
glGetIntegerv(GL_MAJOR_VERSION, &majorVersion);
|
glGetIntegerv(GL_MAJOR_VERSION, &majorVersion);
|
||||||
|
|
24
src/OpenGL.h
24
src/OpenGL.h
|
@ -219,6 +219,30 @@ private:
|
||||||
virtual bool _resizeWindow() = 0;
|
virtual bool _resizeWindow() = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct FBOTextureFormats
|
||||||
|
{
|
||||||
|
GLint colorInternalFormat;
|
||||||
|
GLenum colorFormat;
|
||||||
|
GLenum colorType;
|
||||||
|
u32 colorFormatBytes;
|
||||||
|
|
||||||
|
GLint monochromeInternalFormat;
|
||||||
|
GLenum monochromeFormat;
|
||||||
|
GLenum monochromeType;
|
||||||
|
u32 monochromeFormatBytes;
|
||||||
|
|
||||||
|
GLint depthInternalFormat;
|
||||||
|
GLenum depthFormat;
|
||||||
|
GLenum depthType;
|
||||||
|
u32 depthFormatBytes;
|
||||||
|
|
||||||
|
u32 pad[4];
|
||||||
|
|
||||||
|
void init();
|
||||||
|
};
|
||||||
|
|
||||||
|
extern FBOTextureFormats fboFormats;
|
||||||
|
|
||||||
inline
|
inline
|
||||||
OGLVideo & video()
|
OGLVideo & video()
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue
Block a user