mirror of
https://github.com/hrydgard/ppsspp.git
synced 2026-10-01 14:58:14 +00:00
Delete the OpenGL implementation of DrawActiveTexture.
This commit is contained in:
1 parent
6ca47076e7
commit
192e331b11
2 files changed
-80
No files matched your search
@@ -162,83 +162,6 @@ FramebufferManagerGLES::~FramebufferManagerGLES() {
|
||||
delete [] convBuf_;
|
||||
}
|
||||
|
||||
// x, y, w, h are relative coordinates against destW/destH, which is not very intuitive.
|
||||
// TODO: This could totally use fbo_blit in many cases.
|
||||
void FramebufferManagerGLES::DrawActiveTexture(float x, float y, float w, float h, float destW, float destH, float u0, float v0, float u1, float v1, int uvRotation, int flags) {
|
||||
float texCoords[8] = {
|
||||
u0,v0,
|
||||
u1,v0,
|
||||
u1,v1,
|
||||
u0,v1,
|
||||
};
|
||||
|
||||
if (uvRotation != ROTATION_LOCKED_HORIZONTAL) {
|
||||
float temp[8];
|
||||
int rotation = 0;
|
||||
// Vertical and Vertical180 needed swapping after we changed the coordinate system.
|
||||
switch (uvRotation) {
|
||||
case ROTATION_LOCKED_HORIZONTAL180: rotation = 4; break;
|
||||
case ROTATION_LOCKED_VERTICAL: rotation = 6; break;
|
||||
case ROTATION_LOCKED_VERTICAL180: rotation = 2; break;
|
||||
}
|
||||
for (int i = 0; i < 8; i++) {
|
||||
temp[i] = texCoords[(i + rotation) & 7];
|
||||
}
|
||||
memcpy(texCoords, temp, sizeof(temp));
|
||||
}
|
||||
|
||||
float pos[12] = {
|
||||
x,y,0,
|
||||
x + w,y,0,
|
||||
x + w,y + h,0,
|
||||
x,y + h,0
|
||||
};
|
||||
|
||||
float invDestW = 1.0f / (destW * 0.5f);
|
||||
float invDestH = 1.0f / (destH * 0.5f);
|
||||
for (int i = 0; i < 4; i++) {
|
||||
pos[i * 3] = pos[i * 3] * invDestW - 1.0f;
|
||||
pos[i * 3 + 1] = pos[i * 3 + 1] * invDestH - 1.0f;
|
||||
}
|
||||
|
||||
// We always want a plain state here, well, except for when it's used by the stencil stuff...
|
||||
render_->SetDepth(false, false, GL_ALWAYS);
|
||||
render_->SetRaster(false, GL_CCW, GL_FRONT, GL_FALSE, GL_FALSE);
|
||||
if (!(flags & DRAWTEX_KEEP_STENCIL_ALPHA)) {
|
||||
render_->SetNoBlendAndMask(0xF);
|
||||
render_->SetStencilDisabled();
|
||||
}
|
||||
|
||||
// Upscaling postshaders don't look well with linear
|
||||
if (flags & DRAWTEX_LINEAR) {
|
||||
render_->SetTextureSampler(0, GL_CLAMP_TO_EDGE, GL_CLAMP_TO_EDGE, GL_LINEAR, GL_LINEAR, 0.0f);
|
||||
} else {
|
||||
render_->SetTextureSampler(0, GL_CLAMP_TO_EDGE, GL_CLAMP_TO_EDGE, GL_NEAREST, GL_NEAREST, 0.0f);
|
||||
}
|
||||
|
||||
Simple2DVertex verts[4];
|
||||
memcpy(verts[0].pos, &pos[0], 12);
|
||||
memcpy(verts[1].pos, &pos[3], 12);
|
||||
memcpy(verts[3].pos, &pos[6], 12);
|
||||
memcpy(verts[2].pos, &pos[9], 12);
|
||||
memcpy(verts[0].uv, &texCoords[0], 8);
|
||||
memcpy(verts[1].uv, &texCoords[2], 8);
|
||||
memcpy(verts[3].uv, &texCoords[4], 8);
|
||||
memcpy(verts[2].uv, &texCoords[6], 8);
|
||||
|
||||
uint32_t bindOffset;
|
||||
GLRBuffer *buffer;
|
||||
|
||||
// Workaround: This might accidentally get called from ReportScreen screenshot-taking, and in that case
|
||||
// the push buffer is not mapped. This only happens if framebuffer blit support is not available.
|
||||
if (drawEngineGL_->GetPushVertexBuffer()->IsReady()) {
|
||||
void *dest = drawEngineGL_->GetPushVertexBuffer()->Push(sizeof(verts), &bindOffset, &buffer);
|
||||
memcpy(dest, verts, sizeof(verts));
|
||||
render_->BindVertexBuffer(simple2DInputLayout_, buffer, bindOffset);
|
||||
render_->Draw(GL_TRIANGLE_STRIP, 0, 4);
|
||||
}
|
||||
}
|
||||
|
||||
void FramebufferManagerGLES::UpdateDownloadTempBuffer(VirtualFramebuffer *nvfb) {
|
||||
_assert_msg_(nvfb->fbo, "Expecting a valid nvfb in UpdateDownloadTempBuffer");
|
||||
|
||||
|
||||
Reference in new issue
Block a user