mirror of
https://github.com/ddnet/ddnet.git
synced 2024-11-19 14:38:18 +00:00
commit
e15d1af75e
|
@ -12,11 +12,10 @@
|
|||
#include "graphics_threaded.h"
|
||||
#include "backend_sdl.h"
|
||||
|
||||
|
||||
#if defined(CONF_FAMILY_WINDOWS)
|
||||
PFNGLTEXIMAGE3DPROC glTexImage3DInternal;
|
||||
|
||||
GLAPI void GLAPIENTRY glTexImage3D(GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels)
|
||||
GLAPI void APIENTRY glTexImage3D(GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels)
|
||||
{
|
||||
glTexImage3DInternal(target, level, internalFormat, width, height, depth, border, format, type, pixels);
|
||||
}
|
||||
|
@ -160,7 +159,7 @@ void CCommandProcessorFragment_OpenGL::SetState(const CCommandBuffer::SState &St
|
|||
}
|
||||
else
|
||||
glDisable(GL_SCISSOR_TEST);
|
||||
|
||||
|
||||
|
||||
// texture
|
||||
int SrcBlendMode = GL_ONE;
|
||||
|
@ -335,7 +334,7 @@ void CCommandProcessorFragment_OpenGL::Cmd_Texture_Create(const CCommandBuffer::
|
|||
}
|
||||
}
|
||||
m_aTextures[pCommand->m_Slot].m_Format = pCommand->m_Format;
|
||||
|
||||
|
||||
//
|
||||
int Oglformat = TexFormatToOpenGLFormat(pCommand->m_Format);
|
||||
int StoreOglformat = TexFormatToOpenGLFormat(pCommand->m_StoreFormat);
|
||||
|
@ -384,7 +383,7 @@ void CCommandProcessorFragment_OpenGL::Cmd_Texture_Create(const CCommandBuffer::
|
|||
m_aTextures[pCommand->m_Slot].m_MemSize += TexWidth*TexHeight*pCommand->m_PixelSize;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// 3D texture
|
||||
if((pCommand->m_Flags&CCommandBuffer::TEXFLAG_TEXTURE3D) && m_Max3DTexSize >= CTexture::MIN_GL_MAX_3D_TEXTURE_SIZE)
|
||||
{
|
||||
|
@ -410,12 +409,12 @@ void CCommandProcessorFragment_OpenGL::Cmd_Texture_Create(const CCommandBuffer::
|
|||
}
|
||||
|
||||
mem_free(pTexData);
|
||||
|
||||
|
||||
//
|
||||
glGenTextures(m_TextureArraySize, m_aTextures[pCommand->m_Slot].m_Tex3D);
|
||||
m_aTextures[pCommand->m_Slot].m_State |= CTexture::STATE_TEX3D;
|
||||
for(int i = 0; i < m_TextureArraySize; ++i)
|
||||
{
|
||||
{
|
||||
glBindTexture(GL_TEXTURE_3D, m_aTextures[pCommand->m_Slot].m_Tex3D[i]);
|
||||
glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
||||
glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
||||
|
@ -425,7 +424,7 @@ void CCommandProcessorFragment_OpenGL::Cmd_Texture_Create(const CCommandBuffer::
|
|||
m_aTextures[pCommand->m_Slot].m_MemSize += Width*Height*pCommand->m_PixelSize;
|
||||
}
|
||||
pTexData = pTmpData;
|
||||
}
|
||||
}
|
||||
|
||||
*m_pTextureMemoryUsage += m_aTextures[pCommand->m_Slot].m_MemSize;
|
||||
|
||||
|
@ -441,7 +440,7 @@ void CCommandProcessorFragment_OpenGL::Cmd_Clear(const CCommandBuffer::SCommand_
|
|||
void CCommandProcessorFragment_OpenGL::Cmd_Render(const CCommandBuffer::SCommand_Render *pCommand)
|
||||
{
|
||||
SetState(pCommand->m_State);
|
||||
|
||||
|
||||
glVertexPointer(3, GL_FLOAT, sizeof(CCommandBuffer::SVertex), (char*)pCommand->m_pVertices);
|
||||
glTexCoordPointer(3, GL_FLOAT, sizeof(CCommandBuffer::SVertex), (char*)pCommand->m_pVertices + sizeof(float)*3);
|
||||
glColorPointer(4, GL_FLOAT, sizeof(CCommandBuffer::SVertex), (char*)pCommand->m_pVertices + sizeof(float)*6);
|
||||
|
@ -472,7 +471,7 @@ void CCommandProcessorFragment_OpenGL::Cmd_Screenshot(const CCommandBuffer::SCom
|
|||
int h = pCommand->m_H == -1 ? aViewport[3] : pCommand->m_H;
|
||||
int x = pCommand->m_X;
|
||||
int y = aViewport[3] - pCommand->m_Y - 1 - (h - 1);
|
||||
|
||||
|
||||
// we allocate one more row to use when we are flipping the texture
|
||||
unsigned char *pPixelData = (unsigned char *)mem_alloc(w*(h+1)*3, 1);
|
||||
unsigned char *pTempRow = pPixelData+w*h*3;
|
||||
|
@ -626,16 +625,16 @@ void CCommandProcessor_SDL_OpenGL::RunBuffer(CCommandBuffer *pBuffer)
|
|||
const CCommandBuffer::SCommand *pBaseCommand = pBuffer->GetCommand(&CmdIndex);
|
||||
if(pBaseCommand == 0x0)
|
||||
break;
|
||||
|
||||
|
||||
if(m_OpenGL.RunCommand(pBaseCommand))
|
||||
continue;
|
||||
|
||||
|
||||
if(m_SDL.RunCommand(pBaseCommand))
|
||||
continue;
|
||||
|
||||
if(m_General.RunCommand(pBaseCommand))
|
||||
continue;
|
||||
|
||||
|
||||
dbg_msg("graphics", "unknown command %d", pBaseCommand->m_Cmd);
|
||||
}
|
||||
}
|
||||
|
@ -703,7 +702,7 @@ int CGraphicsBackend_SDL_OpenGL::Init(const char *pName, int *Screen, int *pWidt
|
|||
#else
|
||||
SdlFlags |= SDL_WINDOW_FULLSCREEN;
|
||||
#endif
|
||||
|
||||
|
||||
// set gl attributes
|
||||
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
|
||||
if(FsaaSamples)
|
||||
|
@ -786,7 +785,7 @@ int CGraphicsBackend_SDL_OpenGL::Shutdown()
|
|||
CmdBuffer.AddCommand(Cmd);
|
||||
RunBuffer(&CmdBuffer);
|
||||
WaitForIdle();
|
||||
|
||||
|
||||
// stop and delete the processor
|
||||
StopProcessor();
|
||||
delete m_pProcessor;
|
||||
|
|
Loading…
Reference in a new issue