概要
- 主要用于个人学习记录,不足之处请谅解
- winform平台配置SharpGL【OpenGL在C#的封装】
- 导入Obj模型【不包含材质(VT),读者可自行扩展】
- 包含法向量数据(VN);
- 不包含法向量数据(自行计算VN)。
- 两种效果一致,因本人导出obj格式时偶尔出现偏差,故写了两种方法,均在此处记录
SharpGL配置
- 在NuGet包管理器中直接配置安装
- 配置完成后,在工具箱中将OpenGLControl拖到界面上即可使用
- OpenGLControl的使用网上资料较多,这里不做说明
导入Obj模型
提示:下面直接粘贴代码,代码较为简单,不做过多解释【两种选其一即可】
- Obj中包含法向量(VN)
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using SharpGL;
namespace winform_SharpGL
{
class ObjLoader2
{
public ObjLoader2()
{
}
struct vertex
{
public float x;
public float y;
public float z;
public vertex(float x, float y, float z)
{
this.x = x;
this.y = y;
this.z = z;
}
}
List<List<float>> v = new List<List<float>> { };//存放顶点(x,y,z)坐标
List<List<float>> vn = new List<List<float>> { };//存放法向量(x,y,z)坐标
List<List<int>> f = new List<List<int>> { };//存放面的三个顶点索引
List<int> VN = new List<int> { };//存放面的法向量索引
public ObjLoader2(string fileName)
{
StreamReader objReader = new StreamReader(fileName);
string texLineTem = "";
while (objReader.Peek() !&#