OpenGL程序

OpenGL程序,第1张

#include <windows.h>

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

#include <math.h>

#include <time.h>

#include "glut.h"

static GLfloat spin = 0.0

void init( void )

{

glClearColor( 0.0, 0.0, 0.0, 0.0 )

glShadeModel( GL_FLAT )

}

void display( void )

{

glClear( GL_COLOR_BUFFER_BIT )

glPushMatrix( )

glRotatef( spin, 0.0, 0.0, 1.0 )

glColor3f( 1.0, 1.0, 1.0 )

glRectf( -25.0, -25.0, 25.0, 25.0 )

glPopMatrix( )

glutSwapBuffers( )

}

void spinDisplay( void )

{

spin = spin + 2.0

if ( spin >360.0 )

spin = spin - 360.0

glutPostRedisplay( )

}

void reshape( int w, int h )

{

glViewport( 0, 0, (GLsizei)w, (GLsizei)h )

glMatrixMode( GL_PROJECTION )

glLoadIdentity( )

//void glOrtho(GLdouble left,GLdouble right,GLdouble bottom,GLdouble top,GLdouble near,GLdouble far)

glOrtho( -50.0, 50.0, -50.0, 50.0, -1.0, 1.0 )

glMatrixMode( GL_MODELVIEW )

glLoadIdentity( )

}

void mouse( int button, int state, int x, int y )

{

switch ( button )

{

case GLUT_LEFT_BUTTON:

if ( state == GLUT_DOWN )

glutIdleFunc( spinDisplay )

break

case GLUT_MIDDLE_BUTTON:

if ( state == GLUT_DOWN )

glutIdleFunc( 0 )

break

default:

break

}

}

void keyboard( unsigned char key, int x, int y )

{

switch (key)

{

case 'a':

glutIdleFunc( spinDisplay )

break

case 's':

glutIdleFunc( 0 )

break

}

}

int main( int argc, char** argv )

{

glutInit( &argc, argv )

glutInitDisplayMode( GLUT_DOUBLE | GLUT_RGB )

glutInitWindowSize( 250, 250 )

glutInitWindowPosition( 100, 100 )

glutCreateWindow( argv [0] )

init( )

glutDisplayFunc( display )

glutReshapeFunc( reshape )

glutMouseFunc( mouse )

glutKeyboardFunc( keyboard )

glutMainLoop( )

return 0

}

跟开发小哥哥要了张层次图,两者的最大区别一目了然!

相比Unity,OpenGL是更为底层的一项技术,这个如何解释呢?OpenGL其实就是webGL的前身,它提供的是几何概念,比如点、线、面,相当于画家脑海中的各种素材,只有经过一双妙手,才能画出一张图像,所以相比较而言,用Unity 3D渲染器的人更多一些,因为Unity提供了更为顶层的3D概念,包括空间变换、材质、环境球等,更容易运用理解。

我们都知道纯辩,Unity 3D主要专注于游戏开发、影视动画,底层是c++语言,主要做慎缺需要安装客户端孝高才能使用,openGL采用前端语言(Unity也有一部分JS代码),所以可以直接在浏览器页面进行可视化开发!

更为顶层的three.js和ThingJS都是基于webGL的3D框架,所以可视化开发成为一种巨大的优势(不过Unity的客户端渲染性能一样好),尤其是ThingJS支持在线开发,扩展了开发自由度。

总而言之,一张图说明一切,Unity是一种渲染引擎,可以提供一系列3D开发概念帮助你快速制作影视项目,OpenGL属于渲染接口层,并不具备任何概念,需要自己组建图形,对于初学者不是特别友好,也没有特定的领域覆盖,更适合技术探索者,而不是项目开发者!

如果你是在使用Win32编程,去查一下Win32获取用户

键拆首盘

鼠标

事件的耐轿

函数

就能获取用户输入了什么了。如果是QT下,QT也有

鼠标键盘

事件获取函数。有了这些,就能交互了,你根据用户的旅亩数 *** 作,如点击左、

右键

,做出响应即可。


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

原文地址: http://outofmemory.cn/yw/12454056.html

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

发表评论

登录后才能评论

评论列表(0条)

保存