【问题标题】:glDrawElements with constant normal具有恒定法线的 glDrawElements
【发布时间】:2011-01-08 16:52:38
【问题描述】:

我只是好奇你是否可以在单次调用 DrawElements 进行绘图时指定常量法线。我正在使用 VAO 和 VBO,所以这不是问题,因为我为所有顶点加载一次并只存储 VBO ID,但我可以释放显卡中的一些内存..

这是您需要将数据加载到图形中的方式:

glBindBuffer(GL_ARRAY_BUFFER,VBO[Grid][Normals]);
glNormalPointer(GL_FLOAT, sizeof(vector3f), 0);
glEnableClientState(GL_NORMAL_ARRAY);

当我指定一些 5x5x5 网格,然后使用索引创建立方表面时,处理法线并不多,使用一些常量会有所帮助:)

【问题讨论】:

  • 您的目标是哪种硬件?有什么理由不使用将法线作为统一输入(或将法线硬编码)的顶点着色器?
  • 请始终指定您的目标 OpenGL 版本。

标签: c++ opengl constants draw normals


【解决方案1】:

您可以使用指定始终相同法线的顶点着色器来实现该功能。因此,只需将法线指定为统一,因为对于这些顶点来说是相同的。

【讨论】:

  • 是的,应该这样做我现在正在使用固定管道,因为我还没有处于需要使用着色器的阶段,但也许将代码用于加载着色器并创建会更容易简单的着色器...
  • 是的,在开始使用着色器之前需要付出一些努力,但它们允许您实现最佳算法而无需解决,因为固定的管道实现。
  • 即使不必解决固定管道限制,一旦您开始一起使用多个固定管道功能,使用着色器可能会更容易。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-01-25
  • 2011-03-27
  • 1970-01-01
  • 1970-01-01
  • 2019-04-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多