我的输入纹理为852x640,输出纹理为612x612。我通过着色器传递输入,并希望缩放输出并正确裁剪。我无法让squareCoordinates
,textureCoordinates
和viewPorts
一起正常工作。
我不想只裁剪,我也想缩放它以获得尽可能多的图像。如果我使用Photoshop,我会分两步完成这个步骤(在OpenGL中我试图一步完成):
我正在使用标准的方形顶点和纹理顶点:
static const GLfloat squareVertices[] = {
-1.0f, -1.0f,
1.0f, -1.0f,
-1.0f, 1.0f,
1.0f, 1.0f,
};
static const GLfloat squareTextureVertices[] = {
0.0f, 0.0f,
1.0f, 0.0f,
0.0f, 1.0f,
1.0f, 1.0f
}
我不确切知道viewPort应该是什么。
答案 0 :(得分:6)
视口将是612x612像素。
要缩放和裁剪原始四边形,最简单的方法是将顶点设置为覆盖612x612 rect(在您的情况下我们保持squareVertices
不变),但设置纹理坐标以便左右两侧被裁剪掉:
static const GLfloat squareTextureVertices[] = {
(852.0f-640.0f)/852.0f*0.5f, 0.0f,
1.0f - (852.0f-640.0f)/852.0f*0.5f, 0.0f,
(852.0f-640.0f)/852.0f*0.5f, 1.0f,
1.0f - (852.0f-640.0f)/852.0f*0.5f, 1.0f
}