summaryrefslogtreecommitdiff
path: root/Source
diff options
context:
space:
mode:
authorRyan Houdek <Sonicadvance1@gmail.com>2013-01-19 00:51:00 -0600
committerRyan Houdek <Sonicadvance1@gmail.com>2013-01-19 00:51:14 -0600
commitff9ba6777327d07291bd8682e38931b77fea463d (patch)
tree568a4581e836924006abd8ab846509c4f7afa203 /Source
parentc4bd6329c003686fd43002fc4f78f735166b6cbd (diff)
Remove the dependency on rectangle textures in the software rasterizer. Also make it the be used by default in the software renderer like it was before.
Diffstat (limited to 'Source')
-rw-r--r--Source/Plugins/Plugin_VideoSoftware/Src/SWRenderer.cpp68
-rw-r--r--Source/Plugins/Plugin_VideoSoftware/Src/SWVideoConfig.cpp2
2 files changed, 28 insertions, 42 deletions
diff --git a/Source/Plugins/Plugin_VideoSoftware/Src/SWRenderer.cpp b/Source/Plugins/Plugin_VideoSoftware/Src/SWRenderer.cpp
index 49739b7f6e..16ac1c3cd0 100644
--- a/Source/Plugins/Plugin_VideoSoftware/Src/SWRenderer.cpp
+++ b/Source/Plugins/Plugin_VideoSoftware/Src/SWRenderer.cpp
@@ -52,10 +52,10 @@ void CreateShaders()
{
static const char *fragShaderText =
"varying " PREC " vec2 TexCoordOut;\n"
- "uniform " TEXTYPE " Texture;\n"
+ "uniform sampler2D Texture;\n"
"void main() {\n"
" " PREC " vec4 tmpcolor;\n"
- " tmpcolor = " TEXFUNC "(Texture, TexCoordOut);\n"
+ " tmpcolor = texture2D(Texture, TexCoordOut);\n"
" gl_FragColor = tmpcolor;\n"
"}\n";
static const char *vertShaderText =
@@ -63,7 +63,7 @@ void CreateShaders()
"attribute vec2 TexCoordIn;\n "
"varying vec2 TexCoordOut;\n "
"void main() {\n"
- " gl_Position = pos;\n"
+ " gl_Position = pos;\n"
" TexCoordOut = TexCoordIn;\n"
"}\n";
@@ -74,6 +74,23 @@ void CreateShaders()
uni_tex = glGetUniformLocation(program, "Texture");
attr_pos = glGetAttribLocation(program, "pos");
attr_tex = glGetAttribLocation(program, "TexCoordIn");
+
+ static const GLfloat verts[4][2] = {
+ { -1, -1}, // Left top
+ { -1, 1}, // left bottom
+ { 1, 1}, // right bottom
+ { 1, -1} // right top
+ };
+ static const GLfloat texverts[4][2] = {
+ {0, 1},
+ {0, 0},
+ {1, 0},
+ {1, 1}
+ };
+
+ glUniform1i(uni_tex, 0);
+ glVertexAttribPointer(attr_pos, 2, GL_FLOAT, GL_FALSE, 0, verts);
+ glVertexAttribPointer(attr_tex, 2, GL_FLOAT, GL_FALSE, 0, texverts);
}
void SWRenderer::Prepare()
@@ -86,7 +103,7 @@ void SWRenderer::Prepare()
// TODO: Enable for GLES once RasterFont supports GLES
#ifndef USE_GLES
s_pfont = new RasterFont();
- glEnable(GL_TEXTURE_RECTANGLE_ARB);
+ glEnable(GL_TEXTURE_2D);
#endif
GL_REPORT_ERRORD();
}
@@ -142,48 +159,20 @@ void SWRenderer::DrawTexture(u8 *texture, int width, int height)
glViewport(0, 0, glWidth, glHeight);
glScissor(0, 0, glWidth, glHeight);
- glBindTexture(TEX2D, s_RenderTarget);
+ glBindTexture(GL_TEXTURE_2D, s_RenderTarget);
- glTexImage2D(TEX2D, 0, GL_RGBA, (GLsizei)width, (GLsizei)height, 0, GL_RGBA, GL_UNSIGNED_BYTE, texture);
- glTexParameteri(TEX2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
- glTexParameteri(TEX2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+ glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, (GLsizei)width, (GLsizei)height, 0, GL_RGBA, GL_UNSIGNED_BYTE, texture);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
- static const GLfloat verts[4][2] = {
- { -1, -1}, // Left top
- { -1, 1}, // left bottom
- { 1, 1}, // right bottom
- { 1, -1} // right top
- };
- //Texture rectangle uses pixel coordinates
-#ifndef USE_GLES
- GLfloat u_max = (GLfloat)width;
- GLfloat v_max = (GLfloat)height;
-
- static const GLfloat texverts[4][2] = {
- {0, v_max},
- {0, 0},
- {u_max, 0},
- {u_max, v_max}
- };
-#else
- static const GLfloat texverts[4][2] = {
- {0, 1},
- {0, 0},
- {1, 0},
- {1, 1}
- };
-#endif
- glVertexAttribPointer(attr_pos, 2, GL_FLOAT, GL_FALSE, 0, verts);
- glVertexAttribPointer(attr_tex, 2, GL_FLOAT, GL_FALSE, 0, texverts);
glEnableVertexAttribArray(attr_pos);
glEnableVertexAttribArray(attr_tex);
glActiveTexture(GL_TEXTURE0);
- glUniform1i(uni_tex, 0);
glDrawArrays(GL_TRIANGLE_FAN, 0, 4);
glDisableVertexAttribArray(attr_pos);
glDisableVertexAttribArray(attr_tex);
- glBindTexture(TEX2D, 0);
+ glBindTexture(GL_TEXTURE_2D, 0);
GL_REPORT_ERRORD();
}
@@ -195,11 +184,8 @@ void SWRenderer::SwapBuffer()
GLInterface->Swap();
- swstats.ResetFrame();
+ swstats.ResetFrame();
-#ifndef USE_GLES
- glClearDepth(1.0f);
-#endif
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
GL_REPORT_ERRORD();
diff --git a/Source/Plugins/Plugin_VideoSoftware/Src/SWVideoConfig.cpp b/Source/Plugins/Plugin_VideoSoftware/Src/SWVideoConfig.cpp
index 7f7ef6b0f8..05a6cdddf2 100644
--- a/Source/Plugins/Plugin_VideoSoftware/Src/SWVideoConfig.cpp
+++ b/Source/Plugins/Plugin_VideoSoftware/Src/SWVideoConfig.cpp
@@ -51,7 +51,7 @@ void SWVideoConfig::Load(const char* ini_file)
iniFile.Get("Hardware", "Fullscreen", &bFullscreen, 0); // Hardware
iniFile.Get("Hardware", "RenderToMainframe", &renderToMainframe, false);
- iniFile.Get("Rendering", "HwRasterizer", &bHwRasterizer, true);
+ iniFile.Get("Rendering", "HwRasterizer", &bHwRasterizer, false);
iniFile.Get("Info", "ShowStats", &bShowStats, false);