一、opengl与C++环境配置

1. 下载opengl包。

2. 将压缩包解压后,

  (1)将.dll文件(GLU.DLL, GLUT.DLL, GLUT32.DLL)放到C:\Windows\System32目录下;

  (2)将.h文件(GL.H, GLAUX.H, GLU.H, GLUT.H)放到\\Microsoft Visual Studio 11.0\VC\include\gl目录下,如果gl文件夹没有就新建;

  (3)将.lib文件(glut.lib, glut32.lib, glaux.lib)放到\\Microsoft Visual Studio 11.0\VC\lib目录下;

3. 一般情况下,至此vs与opengl的环境搭建完毕,如果出现其他的问题,可能是链接库没有设置好!

4. 示例代码

 #include<GL/glut.h>
// 绘制立方体
// 将立方体的八个顶点保存到一个数组里面
static const float vertex_list[][] =
{
-0.5f, -0.5f, -0.5f,
0.5f, -0.5f, -0.5f,
-0.5f, 0.5f, -0.5f,
0.5f, 0.5f, -0.5f,
-0.5f, -0.5f, 0.5f,
0.5f, -0.5f, 0.5f,
-0.5f, 0.5f, 0.5f,
0.5f, 0.5f, 0.5f,
};
// 将要使用的顶点的序号保存到一个数组里面
static const GLint index_list[][] =
{
{, }, {, }, {, }, {, },
{, }, {, }, {, }, {, },
{, }, {, }, {, }, {, }
};
// 绘制立方体
void DrawCube(void)
{
int i,j;
glBegin(GL_LINES);
for(i=; i<; ++i) // 12 条线段
{
for(j=; j<; ++j) // 每条线段 2个顶点
{
glVertex3fv(vertex_list[index_list[i][j]]);
}
}
glEnd();
} static float rotate = ;
static int times = ;
void renderScene(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glPushMatrix();
//glTranslatef(-0.2, 0, 0); // 平移
//glScalef(2, 1, 1); // 缩放
times++;
if(times > )
times = ;
if(times % == )
rotate += 0.3;
glRotatef(rotate, , , );
glRotatef(rotate, , , );
glColor3f(, , );
DrawCube();
glPopMatrix();
glutSwapBuffers();
} void main(int argc, char **argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);
glutInitWindowPosition(,);
glutInitWindowSize(, );
glutCreateWindow("GLDemo");
glutDisplayFunc(renderScene);
glutIdleFunc(renderScene);
glutMainLoop();
}

二、opengl与C#环境配置

opengl与C#的环境配置,最流行的是tao库!以tao库配置为例!

1. 首先下载tao库。 http://www.taoframework.com,并安装在自己熟悉的目录下!方便寻找dll文件和相应的附录学习资源

2. 新建C#项目,并在引用栏导入tao库.dll。一般情况下最常使用的库有Tao.OpenGl、Tao.FreeGlut和Tao.Platform.Windows;

并在C#文件开头加入代码:

using Tao.OpenGl;
using Tao.FreeGlut;
using Tao.Platform.Windows;

3. 示例代码

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Tao.OpenGl;
using Tao.FreeGlut;
namespace Okokok
{
class Program
{
static public void Display()
{ Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT);
Gl.glColor3d(1.0, , ); Gl.glTranslated(-,,);
Gl.glLoadIdentity();
Glu.gluLookAt(0.0,0.0,5.0, 0.0,0.0,0.0, 0.0,1.0,0.0);
//glut库中提供的画图函数
Glut.glutWireTeapot(1.5);
// Glut.glutWireIcosahedron();
// Glut.glutWireCube(1.7);
// Glut.glutWireTetrahedron();
// Glut.glutWireTorus(0.2, 1, 100, 100);
// Glut.glutWireCone(2, 1, 100, 100);
// Glut.glutWireSphere(2, 100, 100);
Glut.glutSwapBuffers(); }
static public void Reshape(int w, int h)
{
Gl.glViewport(, , w, h);
Gl.glMatrixMode(Gl.GL_PROJECTION);
Gl.glLoadIdentity();
Glu.gluPerspective(, (double)w/(double)h, , );
Gl.glMatrixMode(Gl.GL_MODELVIEW);
Gl.glLoadIdentity();
Glu.gluLookAt(0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); Gl.glRotated(,, , );
}
static public void Shape()
{
Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT);
Glut.glutWireTeapot(1.8);
Glut.glutWireCube(1.7);
Glut.glutWireIcosahedron();
Gl.glFlush(); }
static void Main(string[] args)
{
Glut.glutInit();
Glut.glutInitDisplayMode(Glut.GLUT_RGBA | Glut.GLUT_SINGLE);
Glut.glutInitWindowPosition(, );
Glut.glutInitWindowSize(, );
Glut.glutCreateWindow("TTTTT");
Glut.glutDisplayFunc(Display);
Glut.glutReshapeFunc(Reshape);
Glut.glutMainLoop();
}
}
}

4. 问题调试:如果运行后发现问题,确少FreeGlut.dll文件,就需要重新将这个文件添加到系统目录C:\Windows\System32下。

总结,如果还有其他问题,百度之!

最新文章

  1. [LeetCode] Find Minimum in Rotated Sorted Array 寻找旋转有序数组的最小值
  2. JQUERY相关
  3. 【腾讯bugly干货】QQ空间直播秒开优化实践
  4. JavaScript之作用域与闭包详解
  5. [leetcode]_Binary Tree Inorder Traversal
  6. Delphi 让自己的软件实现双击打开文件 转
  7. IOS NSNotificationCenter 通知的使用
  8. eclipse 快捷键汇总
  9. Glance 镜像服务群集
  10. jQuery学习笔记 .addClass()/.removeClass()简单学习
  11. 关于CheckStyle在eclipse出现的问题
  12. Android精通:View与ViewGroup,LinearLayout线性布局,RelativeLayout相对布局,ListView列表组件
  13. C++ string简单的使用技巧
  14. 移动电源、3G路由拆机
  15. redhat_6.5下载地址
  16. 一日一句 SQL [持续更新] MySQL + Oracle
  17. 2015-03-22——js常用的Array方法
  18. CodeIgniter (CI)框架中的数据库查询汇总
  19. C++中的Trivial 、POD、non-POD和Standard Layout概念
  20. windows server 2003和window2008区别

热门文章

  1. [LeetCode] Single Number II 位运算
  2. Codeforces Round #449 Div. 2 A B C (暂时)
  3. pyqt线程实现
  4. [SaltStack] salt-master启动流程
  5. 解决WCF部署到IIS出现“证书必须具有能够进行密钥交换的私钥,该进程必须具有访问私钥的权限”
  6. 洛谷——P1125 笨小猴
  7. Best Cow Fences
  8. vue.js移动端app实战2
  9. Android-Handler消息机制实现原理
  10. Linux运维:CentOS6和7的区别