You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OpenGL中三角形法线不显示问题求助

使用法线数组渲染OpenGL法线数据集的实现

最近在搞OpenGL法线渲染的相关内容,整理了一套用法线数组渲染法线数据集的具体实现代码,同时也把我测试时填充法线数组的方式分享出来——哪怕用这种简化的填充逻辑,之前遇到的渲染错误依然会复现:

核心渲染流程代码

首先要启用法线数组并指定数据源:

glEnableClientState(GL_NORMAL_ARRAY);
glNormalPointer(GL_FLOAT, 0, nArray);

接下来是顶点数组的渲染逻辑,这部分和法线数组配合完成绘制:

glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(3, GL_FLOAT, 0, vArray);
glDrawElements(GL_TRIANGLES, iSize, GL_UNSIGNED_INT, iArray);
// 记得用完后禁用对应的客户端状态
glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_NORMAL_ARRAY);

法线数组的测试填充方式

为了方便快速验证问题,我用了非常简单的方式填充nArray——比如给所有顶点设置统一的Y轴正方向法线:

// 假设vertexCount是顶点总数,每个法线由3个float分量组成
for (int i = 0; i < vertexCount * 3; i += 3) {
    nArray[i] = 0.0f;    // X分量
    nArray[i+1] = 1.0f;  // Y分量
    nArray[i+2] = 0.0f;  // Z分量
}

有意思的是,就算用这种毫无复杂计算的填充方式,我之前碰到的那个渲染错误还是会出现。

内容的提问来源于stack exchange,提问作者tester

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:10:54