Fix switching from the different rasterizers
This commit is contained in:
parent
ff9ba67773
commit
621204f3e8
|
@ -75,22 +75,7 @@ void CreateShaders()
|
||||||
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()
|
||||||
|
@ -165,8 +150,25 @@ void SWRenderer::DrawTexture(u8 *texture, int width, int height)
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
||||||
|
|
||||||
|
glUseProgram(program);
|
||||||
|
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}
|
||||||
|
};
|
||||||
|
|
||||||
|
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);
|
||||||
|
glUniform1i(uni_tex, 0);
|
||||||
glActiveTexture(GL_TEXTURE0);
|
glActiveTexture(GL_TEXTURE0);
|
||||||
glDrawArrays(GL_TRIANGLE_FAN, 0, 4);
|
glDrawArrays(GL_TRIANGLE_FAN, 0, 4);
|
||||||
glDisableVertexAttribArray(attr_pos);
|
glDisableVertexAttribArray(attr_pos);
|
||||||
|
|
|
@ -70,7 +70,7 @@ void VideoSoftware::ShowConfig(void *_hParent)
|
||||||
|
|
||||||
bool VideoSoftware::Initialize(void *&window_handle)
|
bool VideoSoftware::Initialize(void *&window_handle)
|
||||||
{
|
{
|
||||||
g_SWVideoConfig.Load((File::GetUserPath(D_CONFIG_IDX) + "gfx_software.ini").c_str());
|
g_SWVideoConfig.Load((File::GetUserPath(D_CONFIG_IDX) + "gfx_software.ini").c_str());
|
||||||
InitInterface();
|
InitInterface();
|
||||||
|
|
||||||
if (!GLInterface->Create(window_handle))
|
if (!GLInterface->Create(window_handle))
|
||||||
|
@ -79,18 +79,16 @@ bool VideoSoftware::Initialize(void *&window_handle)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
InitBPMemory();
|
InitBPMemory();
|
||||||
InitXFMemory();
|
InitXFMemory();
|
||||||
SWCommandProcessor::Init();
|
SWCommandProcessor::Init();
|
||||||
SWPixelEngine::Init();
|
SWPixelEngine::Init();
|
||||||
OpcodeDecoder::Init();
|
OpcodeDecoder::Init();
|
||||||
Clipper::Init();
|
Clipper::Init();
|
||||||
Rasterizer::Init();
|
Rasterizer::Init();
|
||||||
if (g_SWVideoConfig.bHwRasterizer)
|
HwRasterizer::Init();
|
||||||
HwRasterizer::Init();
|
SWRenderer::Init();
|
||||||
else
|
DebugUtil::Init();
|
||||||
SWRenderer::Init();
|
|
||||||
DebugUtil::Init();
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -134,10 +132,8 @@ void VideoSoftware::EmuStateChange(EMUSTATE_CHANGE newState)
|
||||||
|
|
||||||
void VideoSoftware::Shutdown()
|
void VideoSoftware::Shutdown()
|
||||||
{
|
{
|
||||||
if (g_SWVideoConfig.bHwRasterizer)
|
HwRasterizer::Shutdown();
|
||||||
HwRasterizer::Shutdown();
|
SWRenderer::Shutdown();
|
||||||
else
|
|
||||||
SWRenderer::Shutdown();
|
|
||||||
GLInterface->Shutdown();
|
GLInterface->Shutdown();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -149,9 +145,9 @@ void VideoSoftware::Video_Prepare()
|
||||||
{
|
{
|
||||||
#ifndef USE_GLES
|
#ifndef USE_GLES
|
||||||
if (glewInit() != GLEW_OK) {
|
if (glewInit() != GLEW_OK) {
|
||||||
ERROR_LOG(VIDEO, "glewInit() failed!Does your video card support OpenGL 2.x?");
|
ERROR_LOG(VIDEO, "glewInit() failed!Does your video card support OpenGL 2.x?");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Handle VSync on/off
|
// Handle VSync on/off
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
|
@ -168,12 +164,10 @@ void VideoSoftware::Video_Prepare()
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
if (g_SWVideoConfig.bHwRasterizer)
|
HwRasterizer::Prepare();
|
||||||
HwRasterizer::Prepare();
|
SWRenderer::Prepare();
|
||||||
else
|
|
||||||
SWRenderer::Prepare();
|
|
||||||
|
|
||||||
INFO_LOG(VIDEO, "Video backend initialized.");
|
INFO_LOG(VIDEO, "Video backend initialized.");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Run from the CPU thread (from VideoInterface.cpp)
|
// Run from the CPU thread (from VideoInterface.cpp)
|
||||||
|
|
Loading…
Reference in New Issue