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

OpenGL学习五:矢量图形旋转

阅读更多

 

glRotatef(quard,x,y,z);   旋转函数
quard 旋转角度
x,y,z 绕着(x,y,z)轴旋转

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, 0.0f);
  glColor3f(0.0f,0.0f,1.0f);
  glVertex3f( 1.0f,-1.0f, 0.0f);
 glEnd();
 glLoadIdentity();
 glTranslatef(1.5f,0.0f,-6.0f);
 glRotatef(rquad,1.0f,0.0f,0.0f);
 glColor3f(0.5f,0.5f,1.0f);
 glBegin(GL_QUADS);
  glVertex3f(-1.0f, 1.0f, 0.0f);
  glVertex3f( 1.0f, 1.0f, 0.0f);
  glVertex3f( 1.0f,-1.0f, 0.0f);
  glVertex3f(-1.0f,-1.0f, 0.0f);
 glEnd();

 

#include "header.h"

GLfloat	rtri;				
GLfloat	rquad;		

void 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, 0.0f);			
		glColor3f(0.0f,0.0f,1.0f);					
		glVertex3f( 1.0f,-1.0f, 0.0f);					
	glEnd();											
	glLoadIdentity();									
	glTranslatef(1.5f,0.0f,-6.0f);						
	glRotatef(rquad,1.0f,0.0f,0.0f);					
	glColor3f(0.5f,0.5f,1.0f);							
	glBegin(GL_QUADS);									
		glVertex3f(-1.0f, 1.0f, 0.0f);					
		glVertex3f( 1.0f, 1.0f, 0.0f);					
		glVertex3f( 1.0f,-1.0f, 0.0f);					
		glVertex3f(-1.0f,-1.0f, 0.0f);					
	glEnd();																				
	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("矢量图形旋转");
	glutReshapeFunc(ReSizeGLScene);
	glutDisplayFunc(DrawGLScene);
	glutMouseFunc(mouse);
	InitGL();
	glutMainLoop();
	return 0;
}

 

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

相关推荐

    OpenGL高等计算机图形学(旋转风车,太阳系)源码及工程

    首先,OpenGL是一个跨语言、跨平台的编程库,用于渲染2D、3D矢量图形。它不直接处理窗口、按钮等用户界面元素,而是专注于图形渲染。在Windows环境下,Visual Studio是一款常用的集成开发环境(IDE),支持C++和...

    OpenGL图形学实验 正方体绕固定点旋转

    在计算机图形学中,OpenGL是一个强大的跨语言、跨平台的编程接口,用于渲染2D、3D矢量图形。本实验主要探讨的是如何使用OpenGL实现正方体围绕一个固定点(球心)进行旋转,确保其始终以球心为视线方向进行平滑的3D...

    《矢量图形系统开发与编程》配套源码

    8. **图形库和框架**:开发者可能会使用现有的图形库,如OpenGL、DirectX、SVG.js或Paper.js等,源码会展示如何集成和利用这些库来创建复杂的矢量图形应用。 通过研究这些源码,你可以深入了解矢量图形系统的工作...

    矢量图形系统开发

    矢量图形系统开发是计算机图形学的一个重要领域,它涉及到...通过阅读提供的“矢量图形系统开发与编程.pdf”书籍,结合配套的“书中代码”,开发者可以系统地学习并实践这些知识,从而掌握矢量图形系统开发的核心技能。

    一个完整的2维矢量图形软件源代码

    通过研究这个源代码,开发者不仅可以学习到C++编程技术,还能深入理解矢量图形的原理和实现方法,这对于图形编程和游戏开发等领域都是非常有益的。同时,这个项目也可以作为一个起点,进一步扩展为功能更全面的矢量...

    OpenGL实现鼠标点选并旋转物体

    1. **OpenGL基础**:OpenGL是一个跨语言、跨平台的编程接口,用于渲染2D、3D矢量图形。它提供了一系列函数调用来绘制几何形状,管理状态,以及处理图像和颜色。 2. **鼠标事件处理**:在OpenGL中,鼠标事件处理通常...

    3D计算机图形学(OpenGL版).pdf

    OpenGL(Open Graphics Library)是一种跨语言、跨平台的应用程序编程接口(API),用于渲染2D和3D矢量图形。OpenGL广泛应用于计算机图形学领域,包括视频游戏、模拟、计算机辅助设计等领域。 如果要详细说明“3D...

    OPENGL高级图形编程

    OpenGL(Open Graphics Library)是一种跨语言、跨平台的应用程序接口(API),用于渲染2D和3D矢量图形。它是图形编程领域中最广泛使用的API之一,被广泛应用于游戏开发、虚拟现实、增强现实等多个领域。 #### 2. ...

    OpenGL基础图形编程_opengl_

    OpenGL是开放图形库(Open Graphics Library)的缩写,它是一种跨语言、跨平台的应用程序编程接口(API),用于渲染2D、3D矢量图形。OpenGL被广泛应用于游戏开发、科学可视化、虚拟现实等领域。在游戏开发中,OpenGL...

    矢量图形系统vc开发

    总的来说,开发矢量图形系统涉及的知识点包括但不限于:VC编程基础、图形库的使用(如OpenGL或Direct2D)、矢量图形数据格式解析、GIS坐标系统与投影、图形用户界面设计、图形渲染优化以及持续的学习和资源获取。...

    OpenGL三维图形编程指南.zip_OpenGL书_opengl 三维_opengl三维_opengl三维图形_图形编程

    OpenGL(Open Graphics Library)是一个跨语言、跨平台的编程接口,用于渲染2D、3D矢量图形。它是许多应用软件、游戏开发、科学可视化工具的基础。"OpenGL书"通常是指那些详细阐述OpenGL编程技术的书籍,它们可以...

    旋转正方形OPenGL技术

    1. OpenGL基本概念:OpenGL是一个跨语言、跨平台的编程接口,用于渲染2D、3D矢量图形。它由一系列预先定义好的函数组成,开发者可以通过调用这些函数来绘制复杂的图形。 2. C++与OpenGL结合:C++是一种通用的编程...

    二维/三维图形的几何变换(基于OpenGL)

    在计算机图形学中,二维和三维图形的几何变换是至关重要的概念,特别是在使用OpenGL这样的图形库进行编程时。OpenGL是一个跨语言、跨平台的编程接口,用于生成静态和动态的二维、三维图像。本资源提供了支持多种几何...

    基于java的opengl计算机图形学学习资料源码

    OpenGL是一种跨语言、跨平台的应用程序编程接口(API),用于渲染2D和3D矢量图形。它由Khronos Group维护,广泛应用于游戏开发、科学可视化、虚拟现实等领域。OpenGL通过图形管道工作,数据经过一系列的处理阶段,...

    简单矢量图形程序

    这个程序可能包含了创建、编辑和显示矢量图形的基本功能,如绘制直线、曲线、形状,以及变换(如旋转、缩放、平移)和颜色填充等操作。 在源代码中,我们可以期待看到GDI(Graphics Device Interface)或者更现代的...

    陈建春矢量图形设计系统书上的源代码

    2. **OpenGL或GDI+库**:Visual C++可以使用OpenGL或GDI+图形库来实现矢量图形的绘制。OpenGL是一种跨语言、跨平台的编程接口,用于生成2D和3D图像;GDI+则是Windows API的一部分,用于在Windows上进行高级图形绘制...

Global site tag (gtag.js) - Google Analytics