Make sure that blending is disabled when doing DrawPixels.

Add a comment about a potential texture scaling problem with splines.
This commit is contained in:
Henrik Rydgard 2013-12-04 14:02:40 +01:00
parent d1f054e033
commit 3983144c42
2 changed files with 6 additions and 1 deletions

View File

@ -165,6 +165,7 @@ static void DisableState() {
#if !defined(USING_GLES2)
glstate.colorLogicOp.disable();
#endif
glstate.colorMask.set(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
}
void FramebufferManager::SetNumExtraFBOs(int num) {
@ -416,11 +417,12 @@ void FramebufferManager::DrawPixels(const u8 *framebuf, GEBufferFormat pixelForm
float x, y, w, h;
CenterRect(&x, &y, &w, &h, 480.0f, 272.0f, (float)PSP_CoreParameter().pixelWidth, (float)PSP_CoreParameter().pixelHeight);
glBindTexture(GL_TEXTURE_2D, drawPixelsTex_);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 512, 272, GL_RGBA, GL_UNSIGNED_BYTE, useConvBuf ? convBuf : framebuf);
DisableState();
// This might draw directly at the backbuffer (if so, applyPostShader is set) so if there's a post shader, we need to apply it here.
// Should try to unify this path with the regular path somehow, but this simple solution works for most of the post shaders
// (it always runs at output resolution so FXAA may look odd).

View File

@ -28,6 +28,9 @@
// The rest of the transform pipeline like lighting will go as normal, either hardware or software.
// The implementation is initially a bit inefficient but shouldn't be a big deal.
// An intermediate buffer of not-easy-to-predict size is stored at bufPtr.
// PROBLEM: If we then decode the resulting vertices after tesselation again, that means that texcoord prescale,
// if any, may get applied twice!
u32 TransformDrawEngine::NormalizeVertices(u8 *outPtr, u8 *bufPtr, const u8 *inPtr, int lowerBound, int upperBound, u32 vertType) {
// First, decode the vertices into a GPU compatible format. This step can be eliminated but will need a separate
// implementation of the vertex decoder.