11 : renderSettings(renderSettings_)
13 for (
int i = 0; i < 2; ++i) {
16 string header = string(
"#define SUPERIMPOSE ")
17 + char(
'0' + i) +
'\n';
20 d.scalerProgram.attach(vertexShader);
21 d.scalerProgram.attach(fragmentShader);
22 d.scalerProgram.link();
24 if (GLEW_VERSION_2_0) {
25 d.scalerProgram.activate();
26 glUniform1i(d.scalerProgram.getUniformLocation(
"tex"), 0);
28 glUniform1i(d.scalerProgram.getUniformLocation(
"videoTex"), 1);
30 d.texSizeLoc = d.scalerProgram.getUniformLocation(
"texSize");
31 d.cnstsLoc = d.scalerProgram.getUniformLocation(
"cnsts");
39 unsigned srcStartY,
unsigned srcEndY,
unsigned srcWidth,
40 unsigned dstStartY,
unsigned dstEndY,
unsigned dstWidth,
41 unsigned logSrcHeight)
43 Data& d = data[superImpose ? 1 : 0];
47 unsigned yScale = (dstEndY - dstStartY) / (srcEndY - srcStartY);
61 if (GLEW_VERSION_2_0 && ((blur != 0.0f) || (scanline != 1.0f) || superImpose)) {
63 glActiveTexture(GL_TEXTURE1);
65 glActiveTexture(GL_TEXTURE0);
67 d.scalerProgram.activate();
68 glUniform2f(d.texSizeLoc, srcWidth, src.
getHeight());
69 GLfloat a = (yScale & 1) ? 0.5f : ((yScale + 1) / (2.0f * yScale));
71 GLfloat c2 = 3.0f - 2.0f * c1;
72 glUniform4f(d.cnstsLoc,
74 (1.0f - scanline) * 2.0f * c2,
79 dstStartY, dstEndY, dstWidth);