资源简介
vc++ opengl 绘制贝塞尔曲面,使用了提供的绘图器 16个点
代码片段和文件信息
// Bez3d.c
// OpenGL SuperBible Chapter 13
// Demonstrates 3D Bezier Surfaces
// Program by Richard S. Wright Jr.
#include
#include
#include
#include
#include
// The number of control points for this curve
GLint nNumPoints = 3;
GLfloat ctrlPoints[3][3][3]= {{{ -4.0f 0.0f 4.0f}
{ -2.0f 4.0f 4.0f}
{ 4.0f 0.0f 4.0f }}
{{ -4.0f 0.0f 0.0f}
{ -2.0f 4.0f 0.0f}
{ 4.0f 0.0f 0.0f }}
{{ -4.0f 0.0f -4.0f}
{ -2.0f 4.0f -4.0f}
{ 4.0f 0.0f -4.0f }}};
// This function is used to superimpose the control points over the curve
void DrawPoints(void)
{
int ij; // Counting variables
// Set point size larger to make more visible
glPointSize(5.0f);
// Loop through all control points for this example
glBegin(GL_POINTS);
for(i = 0; i < nNumPoints; i++)
for(j = 0; j < 3; j++)
glVertex3fv(ctrlPoints[i][j]);
glEnd();
}
// Called to draw scene
void RenderScene(void)
{
// Clear the window with current clearing color
glClear(GL_COLOR_BUFFER_BIT);
// Save the modelview matrix stack
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
// Rotate the mesh around to make it easier to see
glRotatef(45.0f 0.0f 1.0f 0.0f);
glRotatef(60.0f 1.0f 0.0f 0.0f);
// Sets up the Bezier
// This actually only needs to be called once and could go in
// the setup function
glMap2f(GL_MAP2_VERTEX_3 // Type of data generated
0.0f // Lower u range
10.0f // Upper u range
3 // Distance between points in the data
3 // Dimension in u direction (order)
0.0f // Lover v range
10.0f // Upper v range
9 // Distance between points in the data
3 // Dimension in v direction (order)
&ctrlPoints[0][0][0]); // array of control points
// Enable the evaluator
glEnable(GL_MAP2_VERTEX_3);
// Use higher level functions to map to a grid then evaluate the
// entire thing.
// Map a grid of 10 points from 0 to 10
glMapGrid2f(100.0f10.0f100.0f10.0f);
// Evaluate the grid using lines
glEvalMesh2(GL_LINE010010);
// Draw the Control Points
DrawPoints();
// Restore the modelview matrix
glPopMatrix();
// Dispalay the image
glutSwapBuffers();
}
// This function does any needed initialization on the rendering
// context.
void SetupRC()
{
// Clear Window to white
glClearColor(1.0f 1.0f 1.0f 1.0f );
// Draw in Blue
glColor3f(0.0f 0.0f 1.0f); }
void ChangeSize(int w int h)
{
// Prevent a divide by zero
if(h == 0)
h = 1;
// Set Viewport to window dimensions
glViewport(0 0 w h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-10.0f 10.0f -10.0f 10.0f -10.0f 10.0f);
// Modelview matrix reset
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
int
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3272 1999-09-04 09:21 Bez3d\Bez3d.c
文件 4064 1999-09-04 00:44 Bez3d\Bez3d.dsp
文件 533 1999-09-04 00:38 Bez3d\Bez3d.dsw
文件 32768 1999-09-04 09:21 Bez3d\Bez3d.exe
文件 57856 1999-09-04 09:22 Bez3d\Bez3d.opt
文件 1003 1999-09-04 09:21 Bez3d\Bez3d.plg
目录 0 2010-03-05 09:58 Bez3d
----------- --------- ---------- ----- ----
99496 7
相关资源
- 如何在VC++ 6.0创建RTX项目
- c++写的OpenGL程序透明金字塔有加上光
- VC++ 实现将本地文件通过HTTP上传到网
- VC++采用内存映射方式高效率读写大数
- 《C语言课程设计》 学生成绩管理系统
- VC++6.0无法打开工程解决办法
- VC++6.0实现读取硬盘唯一序列号源码和
- mfc安装全局钩子,显示窗口的标题
- OpenGl文字显示c++类
- 使用动态优先权的进程调度算法的模
- 读取串口数据并画实时曲线的VC++程序
- C++ 3D 五子棋 opengl
- VC++实现滑块皮肤 slider skin
- MFC 计算文件MD5码 VC++
- VC++垃圾文件清理工具源码.rar
- Win32窗口创建源码 by浅墨
- vc++6.0配置OpenCV
- http协议实现c++
- 使用OpenGL编写的三维曲线和曲面,V
- VC++ 多光谱影像处理
- 酒店管理系统 VC++ MFC实现)
- vc++ 浏览器 完整版
- 基于VC++的带通滤波器的设计与实现
- VC++查看鼠标在图像选点坐标程序
- vigenere密码加密解密算法实现软件Vc
- openGL四面体、立方体、正N棱柱、齿轮
- VC++6.0完美运行在win7和win10系统上
- 用OpenGL开发的机械臂运动仿真程序
- 获取系统安装软件(vc++源码)
- 用VC++实现图像连通区域标记
评论
共有 条评论