如何使用 glDrawElements() 绘制硬表面立方体
How to use glDrawElements() to draw hard surfaced cubes?
通过使用元素缓冲区,您可以发送索引,指示哪些顶点用于某个面。但是正常人呢?如果我想使用基本的漫反射着色器渲染立方体,我会得到平滑的法线(如果我之前平滑它们)。但是,当尝试像立方体一样渲染硬表面边缘时,我无法绘制硬边,因为某些面共享相同的顶点。
有没有办法仍然对硬表面对象使用元素缓冲区?
我不喜欢在使用glDrawArrays()时浪费内存。
一般来说,"顶点"(用OpenGL术语)应该包含渲染所需的所有信息。这包括位置,但可能(在您的情况下可能应该)还包括纹理坐标、法线等内容。因此,如果您正在使用两个位置相同但纹理坐标或法线不同的顶点(这在处理立方体或其他"平面阴影"对象接缝时很常见),则应将它们存储为唯一的顶点。
如果执行此操作,您仍然可以使用元素缓冲区。你将不得不增加顶点缓冲区对象的内存大小,如果你渲染的东西像立方体这样简单,你可能不会节省太多内存,但你的元素缓冲区对象不应该比以前大,如果你做得正确的话。
相关文章:
- 如何使用 std::累积在 C++ 中计算总和立方体
- 如何有效地计算将单位立方体映射到自身的反射和旋转?
- 如何在C++中为表面制作邻接矩阵
- 如何使用采样器立方体作为数组
- OpenGL,为什么这不是一个立方体?
- 在具有 MPI 的超立方体中广播
- Opengl 和 c++ 绘制多个立方体
- CGAL - 表面网格参数化
- C++没有标准功能的立方体根查找器
- 现代OpenGL:如何获得立方体的矢量位置
- 使用此网格函数的立方体的正确顶点和索引是什么
- 为什么在GLFW窗口中没有用这个代码在我的屏幕上绘制立方体
- OpenGL中立方体的位置
- 如何在ROS中使用PCL可视化动力学数据的表面法线
- Cgal表面连通性
- 表面未填充sdl_ttf
- 在犰狳立方体中添加一列 1 的有效方法
- 使用犰狳时无法加载犰狳立方体<uword>
- 将粒子投影到立方体的表面
- 如何使用 glDrawElements() 绘制硬表面立方体