我很难将OpenGL原点设置在视图的左上角。因此,在我的窗口大小的处理程序中,我做的事情;
// ox and oy are some offsets and width and height are the
// required viewport width and height
glViewport(ox, oy, width, height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, width, 0, height, -1, 1);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
这将原点保持在左下角,我可以将纹理呈现为:
glBegin(GL_QUADS);
glTexCoord2f(0, 0); glVertex2f(0, 0);
glTexCoord2f(1, 0); glVertex2f(width, 0);
glTexCoord2f(1, 1); glVertex2f(width, height);
glTexCoord2f(0, 1); glVertex2f(0, height);
glEnd();
据我所知,从这里阅读页面,要翻转来源,我只需要用
替换glortho呼叫glOrtho(0, width, height, 0, -1, 1);
但是,这样做并使用上面的渲染代码不再呈现我的纹理,我只会看到一个空白屏幕。
通过在y轴周围翻转,您翻转了世界空间的手性。这意味着您的脸的缠绕以不同的方式出现。CCW变为CW,反之亦然。您很可能会启用脸部剔除,因此要考虑手性翻转,您必须将CCW交换为CW脸。