【问题标题】:opengl: Change the origin to upper left corneropengl:将原点更改为左上角
【发布时间】:2015-05-14 10:56:07
【问题描述】:

我无法将 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);

但是,这样做并使用上面的渲染代码不再渲染我的纹理,我只看到一个空白屏幕。

【问题讨论】:

    标签: opengl 3d coordinate-systems


    【解决方案1】:

    通过围绕 y 轴翻转,您翻转了世界空间的手性。这意味着你脸上的皱纹会以不同的方式出现。 CCW 变为 CW,反之亦然。很可能您启用了面部剔除,因此要考虑手性翻转,您必须将 CCW 换成 CW 面部剔除。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多