c++ - 在 OpenGL 4 中绘制一个简单的矩形

标签 c++ opengl opengl-4

根据 this wikibook 它曾经可以像这样轻松地绘制一个简单的矩形(在创建和初始化窗口之后):

glColor3f(0.0f, 0.0f, 0.0f);
glRectf(-0.75f,0.75f, 0.75f, -0.75f);

这在 OpenGL 3.2 及更高版本中已被删除。

在 OpenGL 4 中是否有其他一些简单、快速和肮脏的方法来绘制具有固定颜色的矩形(不使用着色器或任何花哨的东西)?

最佳答案

Is there some ... way ... to draw a rectangle ... without using shaders ...?

是的。事实上,据我所知,所有现有的 OpenGL 版本都支持它:您可以通过启用剪刀测试并清除帧缓冲区来绘制实心矩形:

glEnable(GL_SCISSOR_TEST);
glScissor(x, y, width, height);
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT);

这在多个方面与 glRect 不同:

  • 坐标以相对于窗口原点的像素为单位指定。
  • 矩形必须轴对齐且不能以任何方式变形。
  • 跳过了大多数针对每个样本的处理。这包括混合、深度和模板测试。

但是,我宁愿劝阻你不要这样做。您可能会更好地构建一个 VAO,其中包含您要在屏幕上绘制的所有矩形,然后使用一个非常简单的着色器绘制它们。

关于c++ - 在 OpenGL 4 中绘制一个简单的矩形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73922876/

相关文章:

c++ - 这个冒号在枚举声明中做了什么?

c++ - 将私有(private)函数覆盖到公共(public)函数的潜在危险是什么?

c++ - 使用点积调整 glRotate

opengl - 非索引渲染中的 gl_VertexID

c++ - 在 assembly 中找到平均值、最小值和最大值

c++ - 推力异常 : "thrust::system::system_error at memory location 0x00000000"

c++ - 如何访问由 std::vector 分配的内存块?

c++ - 我怎样才能让我的相机朝我面对的方向移动

c++ - 如何在没有 VAO 的情况下使用具有 OpenGL 核心配置文件的 VBO?

c++ - 为什么 VERTEX 着色器中的矩阵乘法无法正常工作?