opengl:将原点更改为左上角

Luc*_*uca 2 opengl 3d coordinate-systems

我无法将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();
Run Code Online (Sandbox Code Playgroud)

这使原点保持在左下角,我可以将纹理渲染为:

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();
Run Code Online (Sandbox Code Playgroud)

据我在阅读这里的页面时可以看出,要翻转原点,我只需要替换glOrtho调用

glOrtho(0, width, height, 0, -1, 1);
Run Code Online (Sandbox Code Playgroud)

但是,执行此操作并使用上面的渲染代码不再渲染我的纹理,我只看到一个空白屏幕.

dat*_*olf 5

通过绕y轴翻转,你可以翻转世界空间的手征.这意味着你的脸部缠绕出来的方式不同.CCW成为CW,反之亦然.很可能你已经启用了面部剔除,所以考虑到手性翻转,你必须交换CCW进行CW面部剔除.