mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-27 22:33:17 +00:00
Use rectangle texture for render buffer
Game is rendered correctly even if hardware doesn't support non-power of two textures The ARB_texture_rectangle extension is supported on almost all Macs running 10.4 Tiger
This commit is contained in:
parent
d8be168474
commit
2f59a8792a
1 changed files with 11 additions and 10 deletions
|
@ -43,6 +43,7 @@
|
||||||
#include <Carbon/Carbon.h>
|
#include <Carbon/Carbon.h>
|
||||||
#include <OpenGL/OpenGL.h>
|
#include <OpenGL/OpenGL.h>
|
||||||
#include <OpenGL/gl.h>
|
#include <OpenGL/gl.h>
|
||||||
|
#include <OpenGL/glext.h>
|
||||||
|
|
||||||
#include <SDL.h>
|
#include <SDL.h>
|
||||||
|
|
||||||
|
@ -1214,16 +1215,16 @@ static ApplicationController* appCtrl;
|
||||||
{
|
{
|
||||||
if (0 == m_softwareRenderingTexture)
|
if (0 == m_softwareRenderingTexture)
|
||||||
{
|
{
|
||||||
glEnable(GL_TEXTURE_2D);
|
glEnable(GL_TEXTURE_RECTANGLE_ARB);
|
||||||
|
|
||||||
glGenTextures(1, &m_softwareRenderingTexture);
|
glGenTextures(1, &m_softwareRenderingTexture);
|
||||||
glBindTexture(GL_TEXTURE_2D, m_softwareRenderingTexture);
|
glBindTexture(GL_TEXTURE_RECTANGLE_ARB, m_softwareRenderingTexture);
|
||||||
|
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
glTexParameteri(GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
glTexParameteri(GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
||||||
|
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
|
glTexParameteri(GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
|
glTexParameteri(GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
|
||||||
}
|
}
|
||||||
|
|
||||||
delete[] m_softwareRenderingBuffer;
|
delete[] m_softwareRenderingBuffer;
|
||||||
|
@ -1750,18 +1751,18 @@ int SDL_Flip(SDL_Surface* screen)
|
||||||
const int width = screen->w;
|
const int width = screen->w;
|
||||||
const int height = screen->h;
|
const int height = screen->h;
|
||||||
|
|
||||||
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8,
|
glTexImage2D(GL_TEXTURE_RECTANGLE_ARB, 0, GL_RGBA8,
|
||||||
width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, screen->pixels);
|
width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, screen->pixels);
|
||||||
|
|
||||||
glBegin(GL_QUADS);
|
glBegin(GL_QUADS);
|
||||||
glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
|
glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
|
||||||
glTexCoord2f(0.0f, 0.0f);
|
glTexCoord2f(0.0f, 0.0f);
|
||||||
glVertex2f(0.0f, 0.0f);
|
glVertex2f(0.0f, 0.0f);
|
||||||
glTexCoord2f(1.0f, 0.0f);
|
glTexCoord2f(width, 0.0f);
|
||||||
glVertex2f(width, 0.0f);
|
glVertex2f(width, 0.0f);
|
||||||
glTexCoord2f(1.0f, 1.0f);
|
glTexCoord2f(width, height);
|
||||||
glVertex2f(width, height);
|
glVertex2f(width, height);
|
||||||
glTexCoord2f(0.0f, 1.0f);
|
glTexCoord2f(0.0f, height);
|
||||||
glVertex2f(0.0f, height);
|
glVertex2f(0.0f, height);
|
||||||
glEnd();
|
glEnd();
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue