贝塞尔曲面
所属分类:OpenGL
开发工具:WINDOWS
文件大小:129KB
下载次数:32
上传日期:2017-12-09 21:17:46
上 传 者:
flyin
说明: 利用OpenGL实现简单的Bezier曲面并添加纹理映射
(bezier surface based on OpenGL)
文件列表:
Data (0, 2017-11-10)
Data\123.jpg (143029, 2017-11-10)
main.cpp (5724, 2017-11-12)
程序说明:
利用OpenGL实现贝赛尔曲面的绘制
实验步骤:
1.给定25个控制点坐标
GLfloat ctrlPoints2[5][5][3] = {{{-0.80, -0.80, -0.50}, {-0.40, -0.80, -0.20},{0.00,-0.80,0.00}, {0.40, -0.80,-0.20}, {0.80, -0.80, -0.50}},
{{-0.80, -0.40, -1.00}, {-0.40, -0.40, 0.00},{0.00,-0.40,0.50}, {0.40, -0.40, 0.00}, {0.80, -0.40, -1.00}},
{{-0.80, 0.00, -0.50}, {-0.40, 0.00, -0.20},{0.00,0.00,0.00}, {0.40, 0.00, -0.20}, {0.80, 0.00, -0.50}},
{{-0.80, 0.40, 0.00}, {-0.40, 0.40, -0.30},{0.00,0.40,-0.50}, {0.40,0.40, -0.30}, {0.80, 0.40, 0.00}},
{{-0.80, 0.80, -0.50}, {-0.40, 0.80, -0.20}, {0.00,0.80,0.00},{0.40,0.80, -0.20}, {0.80, 0.80, -0.50}}};
2.给定相应纹理坐标:
GLfloat interval = (GLfloat)1/(GLfloat)4;
GLfloat textureCoordinates[5][5][2] = {{{0.0f, 0.0f}, {interval, 0.0f}, {2*interval, 0.0f}, {3*interval, 0.0f},{1.0f, 0.0f}},
{{0.0f, interval}, {interval, interval}, {2*interval, interval},{3*interval, interval}, {1.0f, interval}},
{{0.0f, 2*interval}, {interval, 2*interval}, {2*interval, 2*interval},{3*interval, 2*interval}, {1.0f, 2*interval}},
{{0.0f, 3*interval}, {interval, 3*interval}, {2*interval, 3*interval},{3*interval, 3*interval}, {1.0f, 3*interval}},
{{0.0f, 1.0f}, {interval, 1.0f}, {2*interval, 1.0f},{3*interval, 1.0f}, {1.0f, 1.0f}}};
3.配置求值器
glMap2f(GL_MAP2_VERTEX_3, 0.0f, 1.0f, 3, 5, 0.0f, 1.0f, 15, 5, &ctrlPoints2[0][0][0]); //map vertex
glMap2f(GL_MAP2_TEXTURE_COORD_2, 0.0f, 1.0f, 2, 5,
0.0f, 1.0f, 10, 5, &textureCoordinates[0][0][0]); //map texture coordinate
实验环境:Windows10 visual studio2012
近期下载者:
相关文件:
收藏者: