`
tiankefeng0520
  • 浏览: 146756 次
  • 性别: Icon_minigender_1
  • 来自: 长春
社区版块
存档分类
最新评论

OpenGL学习六:3D图形

阅读更多
glBegin(GL_QUADS); 
  glVertex3f( 1.0f, 1.0f,-1.0f);   // 四边形的右上顶点 (顶面)
  glVertex3f(-1.0f, 1.0f,-1.0f);   // 四边形的左上顶点 (顶面)
  glVertex3f(-1.0f, 1.0f, 1.0f);   // 四边形的左下顶点 (顶面)
  glVertex3f( 1.0f, 1.0f, 1.0f);   // 四边形的右下顶点 (顶面)

  glVertex3f( 1.0f,-1.0f, 1.0f);   // 四边形的右上顶点(底面)
  glVertex3f(-1.0f,-1.0f, 1.0f);   // 四边形的左上顶点(底面)
  glVertex3f(-1.0f,-1.0f,-1.0f);   // 四边形的左下顶点(底面)
  glVertex3f( 1.0f,-1.0f,-1.0f);   // 四边形的右下顶点(底面)

  glVertex3f( 1.0f, 1.0f, 1.0f);   // 四边形的右上顶点(前面)
  glVertex3f(-1.0f, 1.0f, 1.0f);   // 四边形的左上顶点(前面)
  glVertex3f(-1.0f,-1.0f, 1.0f);   // 四边形的左下顶点(前面)
  glVertex3f( 1.0f,-1.0f, 1.0f);   // 四边形的右下顶点(前面)


  glVertex3f(-1.0f, 1.0f, 1.0f);   // 四边形的右上顶点(左面)
  glVertex3f(-1.0f, 1.0f,-1.0f);   // 四边形的左上顶点(左面)
  glVertex3f(-1.0f,-1.0f,-1.0f);   // 四边形的左下顶点(左面)
  glVertex3f(-1.0f,-1.0f, 1.0f);   // 四边形的右下顶点(左面)

  glVertex3f( 1.0f, 1.0f,-1.0f);   // 四边形的右上顶点(右面)
  glVertex3f( 1.0f, 1.0f, 1.0f);   // 四边形的左上顶点(右面)
  glVertex3f( 1.0f,-1.0f, 1.0f);   // 四边形的左下顶点(右面)
  glVertex3f( 1.0f,-1.0f,-1.0f);   // 四边形的右下顶点(右面)


  glVertex3f( 1.0f,-1.0f,-1.0f);   // 四边形的右上顶点(后面)
  glVertex3f(-1.0f,-1.0f,-1.0f);   // 四边形的左上顶点(后面)
  glVertex3f(-1.0f, 1.0f,-1.0f);   // 四边形的左下顶点(后面)
  glVertex3f( 1.0f, 1.0f,-1.0f);   // 四边形的右下顶点(后面
glEnd();

 
           

 

#include "header.h"


GLfloat	rtri;			
GLfloat	rquad;		


GLvoid ReSizeGLScene(GLsizei width, GLsizei height)		
{
	if (height==0)										
	{
		height=1;									
	}

	glViewport(0,0,width,height);					

	glMatrixMode(GL_PROJECTION);					
	glLoadIdentity();								


	gluPerspective(45.0f,(GLfloat)width/(GLfloat)height,0.1f,100.0f);

	glMatrixMode(GL_MODELVIEW);				
	glLoadIdentity();						
}

int InitGL(void)								
{
	glShadeModel(GL_SMOOTH);						
	glClearColor(0.0f, 0.0f, 0.0f, 0.5f);				
	glClearDepth(1.0f);								
	glEnable(GL_DEPTH_TEST);						
	glDepthFunc(GL_LEQUAL);								
	glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);	
	return TRUE;									
}

void DrawGLScene(void)									
{
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);	
	glLoadIdentity();									
	glTranslatef(-1.5f,0.0f,-6.0f);					
	glRotatef(rtri,0.0f,1.0f,0.0f);					
	glBegin(GL_TRIANGLES);							
		glColor3f(1.0f,0.0f,0.0f);						
		glVertex3f( 0.0f, 1.0f, 0.0f);				
		glColor3f(0.0f,1.0f,0.0f);						
		glVertex3f(-1.0f,-1.0f, 1.0f);					
		glColor3f(0.0f,0.0f,1.0f);						
		glVertex3f( 1.0f,-1.0f, 1.0f);					
		glColor3f(1.0f,0.0f,0.0f);						
		glVertex3f( 0.0f, 1.0f, 0.0f);					
		glColor3f(0.0f,0.0f,1.0f);						
		glVertex3f( 1.0f,-1.0f, 1.0f);					
		glColor3f(0.0f,1.0f,0.0f);						
		glVertex3f( 1.0f,-1.0f, -1.0f);				
		glColor3f(1.0f,0.0f,0.0f);						
		glVertex3f( 0.0f, 1.0f, 0.0f);					
		glColor3f(0.0f,1.0f,0.0f);						
		glVertex3f( 1.0f,-1.0f, -1.0f);				
		glColor3f(0.0f,0.0f,1.0f);						
		glVertex3f(-1.0f,-1.0f, -1.0f);					
		glColor3f(1.0f,0.0f,0.0f);						
		glVertex3f( 0.0f, 1.0f, 0.0f);					
		glColor3f(0.0f,0.0f,1.0f);						
		glVertex3f(-1.0f,-1.0f,-1.0f);					
		glColor3f(0.0f,1.0f,0.0f);						
		glVertex3f(-1.0f,-1.0f, 1.0f);					
	glEnd();											

	glLoadIdentity();									
	glTranslatef(1.5f,0.0f,-7.0f);					
	glRotatef(rquad,1.0f,1.0f,1.0f);					
	glBegin(GL_QUADS);								
		glColor3f(0.0f,1.0f,0.0f);						
		glVertex3f( 1.0f, 1.0f,-1.0f);				
		glVertex3f(-1.0f, 1.0f,-1.0f);					
		glVertex3f(-1.0f, 1.0f, 1.0f);				
		glVertex3f( 1.0f, 1.0f, 1.0f);					
		glColor3f(1.0f,0.5f,0.0f);					
		glVertex3f( 1.0f,-1.0f, 1.0f);					
		glVertex3f(-1.0f,-1.0f, 1.0f);					
		glVertex3f(-1.0f,-1.0f,-1.0f);					
		glVertex3f( 1.0f,-1.0f,-1.0f);					
		glColor3f(1.0f,0.0f,0.0f);						
		glVertex3f( 1.0f, 1.0f, 1.0f);					
		glVertex3f(-1.0f, 1.0f, 1.0f);				
		glVertex3f(-1.0f,-1.0f, 1.0f);					
		glVertex3f( 1.0f,-1.0f, 1.0f);					
		glColor3f(1.0f,1.0f,0.0f);						
		glVertex3f( 1.0f,-1.0f,-1.0f);					
		glVertex3f(-1.0f,-1.0f,-1.0f);					
		glVertex3f(-1.0f, 1.0f,-1.0f);					
		glVertex3f( 1.0f, 1.0f,-1.0f);					
		glColor3f(0.0f,0.0f,1.0f);						
		glVertex3f(-1.0f, 1.0f, 1.0f);					
		glVertex3f(-1.0f, 1.0f,-1.0f);					
		glVertex3f(-1.0f,-1.0f,-1.0f);					
		glVertex3f(-1.0f,-1.0f, 1.0f);					
		glColor3f(1.0f,0.0f,1.0f);						
		glVertex3f( 1.0f, 1.0f,-1.0f);					
		glVertex3f( 1.0f, 1.0f, 1.0f);					
		glVertex3f( 1.0f,-1.0f, 1.0f);					
		glVertex3f( 1.0f,-1.0f,-1.0f);					
	glEnd();											

	rtri+=0.2f;											
	rquad-=0.15f;										
	glFlush();									
}


void rotate()
{
	rtri+=0.2f;											
	rquad-=0.15f;
	glutPostRedisplay();
}
void mouse(int button,int state,int x,int y)
{ 
	switch(button)
	{
	case GLUT_LEFT_BUTTON:
		if(GLUT_DOWN==state)
		{
			glutIdleFunc(rotate);
		}
		break;
	case GLUT_RIGHT_BUTTON:
		if(GLUT_DOWN==state)
		{
			//glutIdleFunc(0);
		}
		break;
	}
}

int main(int argc, char** argv)
{
	glutInit(&argc, argv);
	glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH);
	glutInitWindowSize(640,480);
	glutCreateWindow("3D图形");
	glutReshapeFunc(ReSizeGLScene);
	glutDisplayFunc(DrawGLScene);
	glutMouseFunc(mouse);
	InitGL();
	glutMainLoop();
	return 0;
}

 

  • 大小: 46.4 KB
  • 大小: 7.3 KB
0
5
分享到:
评论

相关推荐

    OpenGL:学习现代3D图形编程之二,玩转色彩 源码2

    在这个“OpenGL:学习现代3D图形编程之二,玩转色彩 源码2”的教程中,我们将深入探讨如何使用OpenGL来操纵颜色,以创建丰富多样的视觉效果。 在3D图形编程中,色彩扮演着至关重要的角色,它能够影响到场景的氛围、...

    OpenGL游戏编程:3D三连棋源码..rar

    总之,OpenGL游戏编程:3D三连棋源码的学习涵盖了OpenGL图形编程、Delphi应用开发、3D几何、矩阵变换、纹理映射以及游戏逻辑等多个方面,是学习3D图形编程和游戏开发的实用案例。通过这个项目,开发者可以深入理解...

    OpenGL:学习现代3D图形编程之二,玩转色彩 源码1

    OpenGL是计算机图形学中的一种广泛应用的图形库,用于在各种操作...通过源码1的学习,你可以深入了解这些概念并亲手实现它们,从而提升你的3D图形编程技能。不断实践和探索,你将能够创建出更加精美、逼真的3D世界。

    OpenGL:学习现代3D图形编程之一,画一个三角形

    画一个白色的三角形,详见我的博客

    Qt OpenGL:学习现代3D图形编程之四,透视投影 源码

    详细介绍参考我的博客

    vs2010+opengl 3D图形变换

    在"vs2010+opengl 3D图形变换"这个项目中,开发者使用了Visual Studio 2010作为集成开发环境(IDE),结合OpenGL进行3D图形编程。这个项目的核心在于对3D图形进行各种空间变换,包括旋转、平移和缩放,以及应用高级...

    opengl计算机图形学3D雪人

    OpenGL是计算机图形学领域中广泛使用的图形库,用于在各种操作系统上创建2D和3D图形。本项目“OpenGL计算机图形学3D雪人”旨在通过应用...通过分析和理解这些源文件,开发者可以深入学习OpenGL编程和3D图形渲染技术。

    opengl绘制MFC绘制3D图形

    OpenGL是用于创建2D和3D图形的强大编程库,它被广泛应用于游戏开发、科学可视化、工程设计等领域。...这个过程涉及到OpenGL的很多基础知识,包括几何绘制、光照处理、视图控制等,是学习3D图形编程的良好起点。

    OpenGL ES实例3:3d翻转的球体

    OpenGL ES 是一种针对嵌入式设备的图形处理接口,它基于桌面版的OpenGL标准,但进行了优化以适应移动设备的性能和资源限制。...通过学习和实践这个实例,开发者可以深入了解3D图形编程,并能创建出更复杂的3D视觉效果。

    QT中的OpenGL学习-3D图形

    QT中的OpenGL学习-3D图形

    OpenGL实验二:绘制钟表.zip

    这个程序特别适用于学习和理解OpenGL的基本概念以及如何在三维空间中进行图形绘制。以下是对该实验代码的主要知识点的详细说明: 1. **OpenGL基础知识**:OpenGL是一个跨语言、跨平台的图形库,用于渲染二维、三维...

    OpenGL.rar_3D图形_opengl简单_图形旋转_旋转

    这个“OpenGL.rar”压缩包显然包含了关于如何使用OpenGL进行3D图形绘制和旋转的教学资料,非常适合那些刚开始接触这个领域的学习者。 OpenGL是一个跨语言、跨平台的编程接口,它的设计目标是提供一种高效的方法来...

    Qt OpenGL:学习现代3D图形编程之三,移动三角形 源码

    详细介绍见我的博客

    OpenGL的基本图形

    这个"OpenGL的基本图形"教程可能是针对初学者的,旨在介绍如何在Visual C++ 6.0环境下使用OpenGL创建基本的3D图形。下面我们将深入探讨OpenGL的一些核心概念、特性以及与VC6.0的结合使用方法。 1. **OpenGL简介**:...

    OpenGL Direct3D 撰写的各种3D图形算法演示

    OpenGL和Direct3D是两种广泛使用的图形编程接口,它们允许开发者创建复杂的3D图形和实时渲染应用程序。在“OpenGL Direct3D 撰写的各种3D图形算法演示”中,我们可以期待深入理解这两种技术的核心原理以及如何利用...

    VC OpenGL API实例:旋转的彩色3D立方体.rar

    一个VC OpenGL API实例:旋转的彩色3D立方体,在窗口缩放的过程中,3D立方体会自动旋转,改变角度,虽然很简单,但可学习一下OpenGL API在VC 中的用法。

    C#版的OpenGL

    OpenGL是一种开放源代码的图形库,它为程序员提供了一种跨平台的方式来创建高性能的2D和3D图形。OpenGL在C++中广泛使用,但在C#编程环境中,开发者通常会利用封装库来调用OpenGL的功能。标题提到的"C#版的OpenGL...

    openGL3D图形展示

    OpenGL是计算机图形学中的一个强大库,用于生成2D、3D图像,广泛应用于游戏开发、科学可视化和工程设计等领域。3D图形展示是OpenGL的...每个示例都是一个宝贵的学习资源,可以帮助你快速掌握和应用OpenGL 3D图形技术。

    OpenGL.rar_java 3d_opengl c# _opengl 动画_opengl结合c#

    OpenGL是一种强大的图形库,用于创建2D和3D图形,被广泛应用于游戏开发、科学可视化、工程设计等领域。本资源包含的是关于如何在C#环境中使用OpenGL进行3D动画编程的相关示例。以下是对这些知识点的详细解释: 1. *...

    (vc6.0)opengl小程序:clock

    OpenGL是计算机图形学中的一个强大的库,用于在各种操作系统上创建2D和3D图形。在本案例中,`(vc6.0)opengl小程序:clock` 是一个使用Microsoft Visual C++ 6.0(简称VC6.0)编译器开发的Windows应用程序,它展示了...

Global site tag (gtag.js) - Google Analytics