mirror of
https://github.com/isledecomp/isle-portable.git
synced 2026-01-11 18:41:14 +00:00
Add MSAA support to OpenGL 1.1 (#640)
This commit is contained in:
parent
a5a3c4ec83
commit
a9db8d321e
@ -16,7 +16,7 @@ static_assert(sizeof(GL11_BridgeTexCoord) == sizeof(TexCoord), "GL11_BridgeTexCo
|
|||||||
static_assert(sizeof(GL11_BridgeSceneLight) == sizeof(SceneLight), "GL11_BridgeSceneLight is wrong size");
|
static_assert(sizeof(GL11_BridgeSceneLight) == sizeof(SceneLight), "GL11_BridgeSceneLight is wrong size");
|
||||||
static_assert(sizeof(GL11_BridgeSceneVertex) == sizeof(D3DRMVERTEX), "GL11_BridgeSceneVertex is wrong size");
|
static_assert(sizeof(GL11_BridgeSceneVertex) == sizeof(D3DRMVERTEX), "GL11_BridgeSceneVertex is wrong size");
|
||||||
|
|
||||||
Direct3DRMRenderer* OpenGL1Renderer::Create(DWORD width, DWORD height)
|
Direct3DRMRenderer* OpenGL1Renderer::Create(DWORD width, DWORD height, DWORD msaaSamples)
|
||||||
{
|
{
|
||||||
// We have to reset the attributes here after having enumerated the
|
// We have to reset the attributes here after having enumerated the
|
||||||
// OpenGL ES 2.0 renderer, or else SDL gets very confused by SDL_GL_DEPTH_SIZE
|
// OpenGL ES 2.0 renderer, or else SDL gets very confused by SDL_GL_DEPTH_SIZE
|
||||||
@ -28,6 +28,11 @@ Direct3DRMRenderer* OpenGL1Renderer::Create(DWORD width, DWORD height)
|
|||||||
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 1);
|
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 1);
|
||||||
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 1);
|
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 1);
|
||||||
|
|
||||||
|
if (msaaSamples > 1) {
|
||||||
|
SDL_GL_SetAttribute(SDL_GL_MULTISAMPLEBUFFERS, 1);
|
||||||
|
SDL_GL_SetAttribute(SDL_GL_MULTISAMPLESAMPLES, msaaSamples);
|
||||||
|
}
|
||||||
|
|
||||||
if (!DDWindow) {
|
if (!DDWindow) {
|
||||||
SDL_Log("No window handler");
|
SDL_Log("No window handler");
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|||||||
@ -41,7 +41,7 @@ Direct3DRMRenderer* CreateDirect3DRMRenderer(
|
|||||||
#endif
|
#endif
|
||||||
#ifdef USE_OPENGL1
|
#ifdef USE_OPENGL1
|
||||||
if (SDL_memcmp(guid, &OpenGL1_GUID, sizeof(GUID)) == 0) {
|
if (SDL_memcmp(guid, &OpenGL1_GUID, sizeof(GUID)) == 0) {
|
||||||
return OpenGL1Renderer::Create(DDSDesc.dwWidth, DDSDesc.dwHeight);
|
return OpenGL1Renderer::Create(DDSDesc.dwWidth, DDSDesc.dwHeight, d3d->GetMSAASamples());
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifdef USE_CITRO3D
|
#ifdef USE_CITRO3D
|
||||||
@ -66,7 +66,7 @@ void Direct3DRMRenderer_EnumDevices(const IDirect3DMiniwin* d3d, LPD3DENUMDEVICE
|
|||||||
OpenGLES3Renderer_EnumDevice(d3d, cb, ctx);
|
OpenGLES3Renderer_EnumDevice(d3d, cb, ctx);
|
||||||
#endif
|
#endif
|
||||||
#ifdef USE_OPENGL1
|
#ifdef USE_OPENGL1
|
||||||
OpenGL1Renderer_EnumDevice(cb, ctx);
|
OpenGL1Renderer_EnumDevice(d3d, cb, ctx);
|
||||||
#endif
|
#endif
|
||||||
#ifdef USE_CITRO3D
|
#ifdef USE_CITRO3D
|
||||||
Citro3DRenderer_EnumDevice(cb, ctx);
|
Citro3DRenderer_EnumDevice(cb, ctx);
|
||||||
|
|||||||
@ -11,7 +11,7 @@ DEFINE_GUID(OpenGL1_GUID, 0x682656F3, 0x0000, 0x0000, 0x00, 0x00, 0x00, 0x00, 0x
|
|||||||
|
|
||||||
class OpenGL1Renderer : public Direct3DRMRenderer {
|
class OpenGL1Renderer : public Direct3DRMRenderer {
|
||||||
public:
|
public:
|
||||||
static Direct3DRMRenderer* Create(DWORD width, DWORD height);
|
static Direct3DRMRenderer* Create(DWORD width, DWORD height, DWORD msaaSamples);
|
||||||
OpenGL1Renderer(DWORD width, DWORD height, SDL_GLContext context);
|
OpenGL1Renderer(DWORD width, DWORD height, SDL_GLContext context);
|
||||||
~OpenGL1Renderer() override;
|
~OpenGL1Renderer() override;
|
||||||
|
|
||||||
@ -54,9 +54,9 @@ class OpenGL1Renderer : public Direct3DRMRenderer {
|
|||||||
ViewportTransform m_viewportTransform;
|
ViewportTransform m_viewportTransform;
|
||||||
};
|
};
|
||||||
|
|
||||||
inline static void OpenGL1Renderer_EnumDevice(LPD3DENUMDEVICESCALLBACK cb, void* ctx)
|
inline static void OpenGL1Renderer_EnumDevice(const IDirect3DMiniwin* d3d, LPD3DENUMDEVICESCALLBACK cb, void* ctx)
|
||||||
{
|
{
|
||||||
Direct3DRMRenderer* device = OpenGL1Renderer::Create(640, 480);
|
Direct3DRMRenderer* device = OpenGL1Renderer::Create(640, 480, d3d->GetMSAASamples());
|
||||||
if (!device) {
|
if (!device) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user