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 data[i].scalerProgram.activate();
26 GLint texLoc = d.scalerProgram.getUniformLocation(
"tex");
27 glUniform1i(texLoc, 0);
29 GLint texLoc2 = d.scalerProgram.getUniformLocation(
"videoTex");
30 glUniform1i(texLoc2, 1);
32 data[i].texSizeLoc = d.scalerProgram.getUniformLocation(
"texSize");
33 data[i].texStepXLoc = d.scalerProgram.getUniformLocation(
"texStepX");
34 data[i].cnstLoc = d.scalerProgram.getUniformLocation(
"cnst");
42 unsigned srcStartY,
unsigned srcEndY,
unsigned srcWidth,
43 unsigned dstStartY,
unsigned dstEndY,
unsigned dstWidth,
44 unsigned logSrcHeight)
46 Data& d = data[superImpose ? 1 : 0];
50 unsigned yScale = (dstEndY - dstStartY) / (srcEndY - srcStartY);
58 if ((blur != 0.0f) && (srcWidth != 1)) {
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 GLfloat scan_a = (yScale & 1) ? 0.5f : ((yScale + 1) / (2.0f * yScale));
69 GLfloat scan_b = 2.0f - 2.0f * scanline;
70 GLfloat scan_c = scanline;
77 glUniform2f(d.texSizeLoc, srcWidth, src.
getHeight());
78 glUniform3f(d.texStepXLoc, 1.0f / srcWidth, 1.0f / srcWidth, 0.0f);
79 glUniform4f(d.cnstLoc, scan_a, scan_b, scan_c, blur);
84 dstStartY, dstEndY, dstWidth);