相关疑难解决方法(0)

如何使用Bresenham创建任意厚度的线?

我目前正在使用Bresenham的算法绘制线条,但它们(当然)厚度为一个像素.我的问题是绘制任意厚度线条的最有效方法是什么?

我使用的语言是C.

algorithm graphics

24
推荐指数
6
解决办法
2万
查看次数

OpenGL 3.2核心配置文件glLineWidth

我在Mac OS X上设置了一个OpenGL 3.2 Core上下文.我希望能够在屏幕上绘制一些厚厚的黑色.在以前版本的OpenGL中,我可以设置

glLineWidth(10.0f);
Run Code Online (Sandbox Code Playgroud)

我会得到一个10像素宽的线.但是当我检查3.2 Core中的线宽范围时

GLint range[2];
glGetIntegerv(GL_ALIASED_LINE_WIDTH_RANGE, range);
glGetIntegerv(GL_SMOOTH_LINE_WIDTH_RANGE, range);
Run Code Online (Sandbox Code Playgroud)

对于别名线,我得到1的值,对于平滑线,我得到0-1的值.如何在屏幕空间中创建一个10.0像素宽的线?除了使每个线段成为矩形之外,还有一种简单的方法来绘制它吗?

opengl osx-lion

9
推荐指数
1
解决办法
4057
查看次数

OpenGL线宽

在我的OpenGL应用程序中,它不会让我画一个大于十个像素宽的线.有没有办法让它绘制超过十个像素?

void OGL_Renderer::drawLine(int x, int y, int x2, int y2, int r, int g, int b, int a, int line_width)
{   
    glColor4ub(r, g, b, a);

    glLineWidth((GLfloat)line_width);
    glBegin(GL_LINES);
    glVertex2i(x, y);
    glVertex2i(x2, y2);
    glEnd();
    glLineWidth(1.0f);
}
Run Code Online (Sandbox Code Playgroud)

c++ opengl line

8
推荐指数
2
解决办法
2万
查看次数

在现代 OpenGL 中画一条线

我只是想在屏幕上画一条线。我正在使用 OpenGL 4.6。我发现的所有教程都使用了glVertexPointer,据我所知,它已被弃用。

我知道如何使用缓冲区绘制三角形,所以我用一条线尝试了这一点。它没有用,只是显示黑屏。(我正在使用 GLFW 和 GLEW,并且我正在使用我已经在三角形上测试过的顶点+片段着色器)

    // Make line
    float line[] = {
        0.0, 0.0,
        1.0, 1.0
    };

    unsigned int buffer; // The ID, kind of a pointer for VRAM
    glGenBuffers(1, &buffer); // Allocate memory for the triangle
    glBindBuffer(GL_ARRAY_BUFFER, buffer); // Set the buffer as the active array
    glBufferData(GL_ARRAY_BUFFER, 2 * sizeof(float), line, GL_STATIC_DRAW); // Fill the buffer with data
    glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 2 * sizeof(float), 0); // Specify how the buffer is converted to vertices …
Run Code Online (Sandbox Code Playgroud)

c++ opengl graphics

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

标签 统计

opengl ×3

c++ ×2

graphics ×2

algorithm ×1

line ×1

osx-lion ×1