学习OpenGL需要什么基础知识

学习OpenGL需要什么基础知识,第1张

C\C++是一定要会的!!

什么是OpenGL:

OpenGL(“Open Graphics Library”)是图形硬件的软件接口。OpenGL包括大约250个不同的函数程序员可以使用这些函数设定要绘制的物体和 *** 作,来制作交互的三维应用程序。

OpenGL是专业图形处理,科学计算等高端应用领域的标准图形库。它的主要竞争对手是微软的Direct3D。OpenGL曾长期处于技术上的领先地位,但近年来Direct3D也迎头赶上。目前这两种图形API在性能上可说是旗鼓相当。不过OpenGL支持众多的 *** 作系统,而Direct3D只在Windows平台上可用。因此OpenGL仍然广受瞩目。

怎样开始学习OpenGL:

你可以在OpenGL的官方网站>

用glutDisplayFunc()函数来画图。

我给你一个完整的程序,你把程序中的display函数换成DrawPoints就可以了

#include <GL/gluth>

void display(void)

{

glClear (GL_COLOR_BUFFER_BIT);/ clear all pixels /

glColor3f (08, 10, 10);

glBegin(GL_POLYGON);/ draw white polygon with corners at(025, 025, 00) and (075, 075, 00)/

glVertex3f (025, 025, 00);

glVertex3f (075, 025, 00);

glVertex3f (075, 075, 00);

glVertex3f (025, 075, 00);

glEnd();

glFlush ();/ start processing buffered OpenGL routines /

}

void init (void)

{

glClearColor (00, 00, 00, 00);/ select clearing color /

glMatrixMode(GL_PROJECTION);

glLoadIdentity();

glOrtho(00, 10, 00, 10, -10, 10);/ initialize viewing values /

}

int main(int argc, char argv)

{

glutInit(&argc, argv);

glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);/Declare initial display mode(single buffer and RGBA)/

glutInitWindowSize (250, 250); /Declare initial window size/

glutInitWindowPosition (100, 100);/Declare initial window position/

glutCreateWindow ("hello OpenGL");/Open window with "hello"in its title bar/

init ();/Call initialization routines/

glutDisplayFunc(display); /Register callback function to display graphics/

glutMainLoop();/Enter main loop and process events/

return 0; / ANSI C requires main to return int /

}

编译链接的方法请看链接:

>

语法也有错误:glVertex3fv(&vdata [&tindices[i][0][0]]);

glVertex3fv(&vdata [tindices[i][1][0]]);

glVertex3fv(&vdata [tindices[i][2][0]]);

改为:

glVertex3fv(vdata [tindices[i][0]]);

   

glVertex3fv(vdata [tindices[i][1]]);

     

glVertex3fv(vdata [tindices[i][2]]);

我的运行环境是在QT IDE上运行的。470版。

如果你是在VC上运行应该也要加入opengl32,glut,glut32库(32位WIN上的),

另外,这个程序你是看不到一个球体的,因为你没有使用光照,只能看到一个轮廓。

我的Qt上我加入的库是:opengl32,glut,glee5(glee5是glee是自己编译的替换glut32库)

头加入了:windownh,gl/gleeh(gleeh就是glee的头文件在网上可以下载,比glh要高级,因为WIN上的glh只支持到opengl32的11版)

源文件:

#include <windowsh>///////////////////////////////

#include <GL/gleeh>

////////////////////////////////

#include <GL\gluth>

#include <mathh>

#define x 52573

#define z 85965

void mydisplay(void)

{

 

static GLfloat vdata[12][3]={{-x,00,z},

{x,00,z},

                              {-x,00,-z},

                              {x,00,-z},

{00,z,x},

{00,z,-x},

                              {00,-z,x},

                              {00,-z,-x},

                              {z,x,00},

{-z,x,00},

                              {z,-x,00},

{-z,-x,00}};

 static GLuint tindices[20][3]={{1,4,0},

{4,9,0},

                                {4,5,9},

                                {8,5,4},

                                {1,8,4},

{1,10,8},

{10,3,8},

                                {8,3,5},

{3,2,5},

{3,7,2},

{3,10,7},

                                {10,6,7},

                                {6,11,7},

{6,0,11},

{6,1,0},

{10,1,6},

                                {11,0,9},

                                {2,11,9},

                                {5,2,9},

                                {11,2,7}};

 int i;

glBegin(GL_TRIANGLES);

 for(i=0;i<20;i++)

{

     

glVertex3fv(vdata [tindices[i][0]]);//////////////////////////////////////////////

     glVertex3fv(vdata [tindices[i][1]]);/////////////////////////////////////////////

     glVertex3fv(vdata [tindices[i][2]]);////////////////////////////////////////////

 }

glEnd();

}

int main(int argc, char argv[])

{

 glutInit(&argc, argv);

 glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);

 glutInitWindowPosition(100, 100);

 glutInitWindowSize(400, 400);

 glutCreateWindow("第一个OpenGL程序");

 glutDisplayFunc(&mydisplay);

 glutMainLoop();

 return 0;

}

后面加了///////////////////////////////////是我修改了的。

我用的连接库是:

LIBS=-lopengl32 -lfreeglut -lglee5

以上就是关于学习OpenGL需要什么基础知识全部的内容,包括:学习OpenGL需要什么基础知识、用Visual Studio写一个OpenGL程序:实现立方体的转动、OPENGL画线程序在VC上如何创建并运行等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10174753.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存