小编dun*_*naj的帖子

QOpenGLWidget类中的QPainter和OpenGL本机代码

我正在准备一个桌面应用程序来绘制一些2D图.我正在使用C++:Qt 5和visual studio 2013.我创建了一个简单的GUI并将myQOpenGLWidget放入其中.我已经使用自己的openGl着色器绘制了图形,轴和刻度.一切正常,现在我想将描述添加到我的轴和刻度线,以使图形可以分析.就像在OpenGL中一样,没有用于渲染文本的专用函数,我想出了使用QPainter对象只是为了已经创建的绘图添加了所需的描述.以下是开始的问题......

这是我的QopenGLWidget实现的功能:

void GLWidget::initializeGL() {
initializeOpenGLFunctions();
glEnable(GL_POINT_SPRITE);
glEnable(GL_VERTEX_PROGRAM_POINT_SIZE);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

vertexShad = new QOpenGLShader(QOpenGLShader::Vertex);
fragmentShad = new QOpenGLShader(QOpenGLShader::Fragment);

bool flag = vertexShad->compileSourceFile(QString("vs.glsl"));
if (flag) printf("compiled vertex Shader\n");
flag = fragmentShad->compileSourceFile(QString("fs.glsl"));
if (flag) printf("compiled fragment Shader\n");
flag = program.addShader(vertexShad);
if (flag) printf("linked vertex Shader\n");
flag = false;
flag =program.addShader(fragmentShad);
if (flag) printf("linked fragment Shader\n");

program.link();
program.bind();
}
Run Code Online (Sandbox Code Playgroud)

paintGL:

void GLWidget::paintGL() {
painter = new QPainter(this);

painter->beginNativePainting();
glViewport(0, 0, this->width(), this->height());
glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT);
drawAxes();
glViewport(MARGIN, …
Run Code Online (Sandbox Code Playgroud)

c++ opengl qt qt5 visual-studio-2013

3
推荐指数
1
解决办法
3798
查看次数

标签 统计

c++ ×1

opengl ×1

qt ×1

qt5 ×1

visual-studio-2013 ×1