这些天我正在学习OpenGL,并尝试在本书上编译示例代码(OpenGL SuperBible)

代码如下所示:首先使用glEnable(GL_LINE_STIPPLE)打开GL_LINE_STIPPLE,然后使用glLineStipple(2, (GLushort)0x00ff),最后我绘制了一些线,但是在执行时,它只是显示正常的线。 (在Ubuntu中)

但是,我在Windows中编译了相同的代码,它起作用了!!

为什么? Windows和Linux之间是否有其他详细信息?

#include <QtGui>
#include "GLWidget.h"
GLWidget::GLWidget(QWidget *parent)
    : QGLWidget(parent)
{
    setFormat(QGLFormat(QGL::DoubleBuffer));
}
GLWidget::~GLWidget()
{
}
void GLWidget::initializeGL()
{
    glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
    glEnable(GL_LINE_STIPPLE);
}
void GLWidget::resizeGL(int w, int h)
{
    if(h == 0)
        h = 1;
    glViewport(0, 0, w, h);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(-100, 100, -100, 100, -1, +1);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
}
void GLWidget::paintGL()
{
    glClear(GL_COLOR_BUFFER_BIT);
    drawLine();
}
void GLWidget::drawLine()
{
    GLint factor = 1;
    GLushort pattern = 0x00ff;
    glColor3f(1.0f, 1.0f, 1.0f);
    for(GLfloat i = -90.0f; i < 90.0f; i += 20.0f)
    {
        glLineStipple(factor, pattern);
        glLineWidth(5.0);
        glBegin(GL_LINES);
            glVertex2f(-80.0f, i);
            glVertex2f(+80.0f, i);
        glEnd();
        factor++;
    }
}

最佳答案

从您对@Lefteris的评论答复中,我已经看到您正在使用基于Mesa3D / DRI的“ radeon”驱动程序。我建议您从他们的网站下载AMD的专用驱动程序(fglrx),安装该驱动程序,然后重试。

关于c++ - GL_LINE_STIPPLE在Ubuntu中不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9288056/

10-09 19:54