首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >QGL,opengl - zaxis的所有值都在1之外;-1被裁剪

QGL,opengl - zaxis的所有值都在1之外;-1被裁剪
EN

Stack Overflow用户
提问于 2014-03-25 18:05:36
回答 1查看 34关注 0票数 0

Z轴:(1;-1)范围之外的所有图形都会被裁剪。下面是一些代码:

代码语言:javascript
运行
AI代码解释
复制
void MainWindow::initializeGL()
{
    glDepthRange(-2,2);
    glEnable(GL_TEXTURE_2D);
    glDisable(GL_COLOR_MATERIAL);
    glEnable(GL_BLEND);
    glEnable(GL_POLYGON_SMOOTH);
    //glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
    glClearColor(1, 1, 0, 0);
    glDisable(GL_DEPTH_TEST);  // Enables Depth Testing
       glDepthFunc(GL_LESS);     // The Type Of Depth Test To Do
       glShadeModel(GL_SMOOTH);  // Enables Smooth Color Shading
       glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);

}

void MainWindow::paintGL(){
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

glLoadIdentity();
 // glEnable(GL_TEXTURE_2D);
 // glBindTexture(GL_TEXTURE_2D,texture);
 // glTexSubImage2D(GL_TEXTURE_2D, 0, 0,0 , image.width(), image.height(),  0, 0, image.bits() );
//glMatrixMode(GL_MODELVIEW);
//glEnable(GL_DEPTH_TEST);
glTranslated(0.0, 0.0, 1.9);
  qglColor(Qt::black);
      glBegin(GL_TRIANGLES);

      glVertex3d(-0.1,0.1,1);
      glVertex3d(-0.1,-0.1,-1);
      glVertex3d(0.1,-0.1,0);

      glEnd();

}

你知道为什么会这样吗?

EN

回答 1

Stack Overflow用户

发布于 2014-03-25 18:21:32

这实际上是完全正常的行为。

当您使用标识模型视图和投影矩阵时,您的坐标在剪辑空间中。OpenGL中3D顶点的默认W值为1.0 (顶点始终为4D),剪辑空间-> NDC的工作方式是将顶点的每个组件除以其W组件,然后裁剪坐标在-1,1范围之外的任何对象。

我认为让您感到困惑的是glDepthRange (...)调用。这不会影响剪裁。深度范围是视口变换的一部分,视口变换在裁剪之后发生

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22642805

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文