mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-01-10 08:09:26 +01:00
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.
This commit is contained in:
parent
c4bd6329c0
commit
ff9ba67773
@ -52,10 +52,10 @@ void CreateShaders()
|
|||||||
{
|
{
|
||||||
static const char *fragShaderText =
|
static const char *fragShaderText =
|
||||||
"varying " PREC " vec2 TexCoordOut;\n"
|
"varying " PREC " vec2 TexCoordOut;\n"
|
||||||
"uniform " TEXTYPE " Texture;\n"
|
"uniform sampler2D Texture;\n"
|
||||||
"void main() {\n"
|
"void main() {\n"
|
||||||
" " PREC " vec4 tmpcolor;\n"
|
" " PREC " vec4 tmpcolor;\n"
|
||||||
" tmpcolor = " TEXFUNC "(Texture, TexCoordOut);\n"
|
" tmpcolor = texture2D(Texture, TexCoordOut);\n"
|
||||||
" gl_FragColor = tmpcolor;\n"
|
" gl_FragColor = tmpcolor;\n"
|
||||||
"}\n";
|
"}\n";
|
||||||
static const char *vertShaderText =
|
static const char *vertShaderText =
|
||||||
@ -63,7 +63,7 @@ void CreateShaders()
|
|||||||
"attribute vec2 TexCoordIn;\n "
|
"attribute vec2 TexCoordIn;\n "
|
||||||
"varying vec2 TexCoordOut;\n "
|
"varying vec2 TexCoordOut;\n "
|
||||||
"void main() {\n"
|
"void main() {\n"
|
||||||
" gl_Position = pos;\n"
|
" gl_Position = pos;\n"
|
||||||
" TexCoordOut = TexCoordIn;\n"
|
" TexCoordOut = TexCoordIn;\n"
|
||||||
"}\n";
|
"}\n";
|
||||||
|
|
||||||
@ -74,6 +74,23 @@ void CreateShaders()
|
|||||||
uni_tex = glGetUniformLocation(program, "Texture");
|
uni_tex = glGetUniformLocation(program, "Texture");
|
||||||
attr_pos = glGetAttribLocation(program, "pos");
|
attr_pos = glGetAttribLocation(program, "pos");
|
||||||
attr_tex = glGetAttribLocation(program, "TexCoordIn");
|
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()
|
void SWRenderer::Prepare()
|
||||||
@ -86,7 +103,7 @@ void SWRenderer::Prepare()
|
|||||||
// TODO: Enable for GLES once RasterFont supports GLES
|
// TODO: Enable for GLES once RasterFont supports GLES
|
||||||
#ifndef USE_GLES
|
#ifndef USE_GLES
|
||||||
s_pfont = new RasterFont();
|
s_pfont = new RasterFont();
|
||||||
glEnable(GL_TEXTURE_RECTANGLE_ARB);
|
glEnable(GL_TEXTURE_2D);
|
||||||
#endif
|
#endif
|
||||||
GL_REPORT_ERRORD();
|
GL_REPORT_ERRORD();
|
||||||
}
|
}
|
||||||
@ -142,48 +159,20 @@ void SWRenderer::DrawTexture(u8 *texture, int width, int height)
|
|||||||
glViewport(0, 0, glWidth, glHeight);
|
glViewport(0, 0, glWidth, glHeight);
|
||||||
glScissor(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);
|
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, (GLsizei)width, (GLsizei)height, 0, GL_RGBA, GL_UNSIGNED_BYTE, texture);
|
||||||
glTexParameteri(TEX2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
||||||
glTexParameteri(TEX2D, GL_TEXTURE_MIN_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_pos);
|
||||||
glEnableVertexAttribArray(attr_tex);
|
glEnableVertexAttribArray(attr_tex);
|
||||||
glActiveTexture(GL_TEXTURE0);
|
glActiveTexture(GL_TEXTURE0);
|
||||||
glUniform1i(uni_tex, 0);
|
|
||||||
glDrawArrays(GL_TRIANGLE_FAN, 0, 4);
|
glDrawArrays(GL_TRIANGLE_FAN, 0, 4);
|
||||||
glDisableVertexAttribArray(attr_pos);
|
glDisableVertexAttribArray(attr_pos);
|
||||||
glDisableVertexAttribArray(attr_tex);
|
glDisableVertexAttribArray(attr_tex);
|
||||||
|
|
||||||
glBindTexture(TEX2D, 0);
|
glBindTexture(GL_TEXTURE_2D, 0);
|
||||||
GL_REPORT_ERRORD();
|
GL_REPORT_ERRORD();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -195,11 +184,8 @@ void SWRenderer::SwapBuffer()
|
|||||||
|
|
||||||
GLInterface->Swap();
|
GLInterface->Swap();
|
||||||
|
|
||||||
swstats.ResetFrame();
|
swstats.ResetFrame();
|
||||||
|
|
||||||
#ifndef USE_GLES
|
|
||||||
glClearDepth(1.0f);
|
|
||||||
#endif
|
|
||||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||||
|
|
||||||
GL_REPORT_ERRORD();
|
GL_REPORT_ERRORD();
|
||||||
|
@ -51,7 +51,7 @@ void SWVideoConfig::Load(const char* ini_file)
|
|||||||
iniFile.Get("Hardware", "Fullscreen", &bFullscreen, 0); // Hardware
|
iniFile.Get("Hardware", "Fullscreen", &bFullscreen, 0); // Hardware
|
||||||
iniFile.Get("Hardware", "RenderToMainframe", &renderToMainframe, false);
|
iniFile.Get("Hardware", "RenderToMainframe", &renderToMainframe, false);
|
||||||
|
|
||||||
iniFile.Get("Rendering", "HwRasterizer", &bHwRasterizer, true);
|
iniFile.Get("Rendering", "HwRasterizer", &bHwRasterizer, false);
|
||||||
|
|
||||||
iniFile.Get("Info", "ShowStats", &bShowStats, false);
|
iniFile.Get("Info", "ShowStats", &bShowStats, false);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user