在Opengl中渲染.重叠的对象
Render in Opengl. Overlapping Objects
我在OpenGL中渲染重叠对象时有问题。
我正在调用绘制对象的函数,所以如果我调用drawB(),然后drawA (), A在B之上,B可能被A隐藏。
一切工作正常,直到发生A是一条线(GL_LINES)和B是一个多边形(GL_POLYGON)。如果发生这种情况,应该放在底部的B就会被画在a上面。
现在我已经禁用了GL_DEPTH_TEST。我试着启用它,我尝试了glDepthMask和glPolygonOffset,但都没有工作。我想我用错了。有什么想法吗,我怎样才能把这些物体按正确的顺序画出来?
* *编辑:显然,问题是我没有清除GL_COLOR_BUFFER_BIT,但我没有清除速度问题。我必须找到一种不擦除gl_color_buffer_bit的方法,按顺序绘制对象**
它有一个定义为r.right glOrtho (r.left () (), r.bottom (), r.top (), 0, 2),
调用该函数时,先绘制背景对象,然后绘制前景。我希望背景物体画在前景下面。
这个想法是,我有两个布局,一个用于前景,一个用于背景。首先,背景中的每个对象都绘制自己。然后前景中的每个物体都做同样的事情。每个对象都有一个显示列表,它根据自己的需要变换自己的坐标系统。显示列表的思想是允许对象嵌套,每个对象都有自己的坐标系统,而不管它们的父坐标系统。
一会儿,我在后台有一组对象
glBegin (GL_POLYGON) ;
for (angle = 0; angle<PI * 2;angle+=1){
glVertex2f (X + sin(angle) * Radius, Y + cos(angle) * Radius);
}
glEnd () ;
另一个对象,在前景布局
glBegin(GL_LINES);
glVertex2f(m_x[m_currentPositionP1],m_y[m_currentPositionP1]);
glVertex2f(m_x[m_currentPositionP],m_y[m_currentPositionP]);
glEnd();
但是线条被多边形
只要你反向画,glVertex2f
就能得到很好的结果。
由于您想要不同的顺序,因此需要指定Z坐标以确定哪个在顶部。glVertex3f
增值。
相关文章:
- 什么时候调用组成单元对象的析构函数
- 对RValue对象调用的LValue ref限定成员函数
- CMake-按正确顺序将项目与C运行时对象文件链接
- 空基优化子对象的地址
- 将对象数组的引用传递给函数
- 你能重载对象变量名本身返回的内容吗
- C++使用整数的压缩数组初始化对象
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 将对象移动到std::shared_ptr
- 代理对象的常量正确性
- Ardunio UNO解决了多个重叠的定时器循环
- 提升 ASIO 无法识别计时器对象
- 将Ref对象作为类成员
- 将包含C样式数组的对象初始化为成员变量(C++)
- USB-HID 读/写(重叠)等待单个对象不返回C++
- 擦除CPP中的重叠对象
- 用2个着色器渲染两个重叠的2D对象
- malloc'd 内存重叠由 std::make_shared 创建的对象
- 2D矢量,数组中的重叠和不同类型的对象
- 在Opengl中渲染.重叠的对象