`
美丽的小岛
  • 浏览: 308256 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

OpenGL之绘点

 
阅读更多

画点的例子:

#include "stdafx.h"
#include<gl/glut.h>
#include<cmath>
// Define a constant for the value of PI
#define GL_PI 3.1415f

// Rotation amounts
static GLfloat xRot = 0.0f;
static GLfloat yRot = 0.0f;


// Called to draw scene
void RenderScene(void)
{
	GLfloat x,y,z,angle; // Storeage for coordinates and angles

	// Clear the window with current clearing color
	glClear(GL_COLOR_BUFFER_BIT);

	// Save matrix state and do the rotation
	glPushMatrix();
	glRotatef(xRot, 1.0f, 0.0f, 0.0f);
	glRotatef(yRot, 0.0f, 1.0f, 0.0f);

	// Call only once for all remaining points
	glBegin(GL_POINTS);

	z = -50.0f;
	for(angle = 0.0f; angle <= (2.0f*GL_PI)*3.0f; angle += 0.1f)
	{
		x = 30.0f*sin(angle);
		y = 40.0f*cos(angle);

		// Specify the point and move the Z value up a little	
		glVertex3f(x, y, z);
		z += 0.5f;
	}

	// Done drawing points
	glEnd();

	// Restore transformations
	glPopMatrix();

	// Flush drawing commands
	glutSwapBuffers();
}

// This function does any needed initialization on the rendering
// context. 
void SetupRC()
{
	// Black background
	glClearColor(0.0f, 0.0f, 0.0f, 1.0f );

	// Set drawing color to green
	glColor3f(1.0f, 0.0f, 0.0f);
}

void SpecialKeys(int key, int x, int y)
{
	if(key == GLUT_KEY_UP)
		xRot-= 5.0f;

	if(key == GLUT_KEY_DOWN)
		xRot += 5.0f;

	if(key == GLUT_KEY_LEFT)
		yRot -= 5.0f;

	if(key == GLUT_KEY_RIGHT)
		yRot += 5.0f;

	if(key > 356.0f)
		xRot = 0.0f;

	if(key < -1.0f)
		xRot = 355.0f;

	if(key > 356.0f)
		yRot = 0.0f;

	if(key < -1.0f)
		yRot = 355.0f;

	// Refresh the Window
	glutPostRedisplay();
}


void ChangeSize(int w, int h)
{
	GLfloat nRange = 100.0f;

	// Prevent a divide by zero
	if(h == 0)
		h = 1;

	// Set Viewport to window dimensions
	glViewport(0, 0, w, h);

	// Reset projection matrix stack
	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();

	// Establish clipping volume (left, right, bottom, top, near, far)
	if (w <= h) 
		glOrtho (-nRange, nRange, -nRange*h/w, nRange*h/w, -nRange, nRange);
	else 
		glOrtho (-nRange*w/h, nRange*w/h, -nRange, nRange, -nRange, nRange);

	// Reset Model view matrix stack
	glMatrixMode(GL_MODELVIEW);
	glLoadIdentity();
}

int main(int argc, char* argv[])
{
	glutInit(&argc, argv);
	glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
	glutCreateWindow("Points Example");
	glutReshapeFunc(ChangeSize);
	glutSpecialFunc(SpecialKeys);
	glutDisplayFunc(RenderScene);
	SetupRC();
	glutMainLoop();

	return 0;
}

 效果:



 

  • 大小: 28.3 KB
分享到:
评论

相关推荐

    基于MFC的OpenGL绘图

    基于MFC的OpenGL绘图 在计算机图形学中,OpenGL是一个跨平台的图形API,提供了强大的图形处理能力。MFC(Microsoft Foundation Classes)是一个基于C++的应用程序框架,提供了一个功能强大的开发环境。在基于MFC的...

    android opengl 入门 画点 画图

    本教程将引导你入门Android上的OpenGL ES,讲解如何在屏幕上画点和画图。 首先,我们需要理解OpenGL ES的基本概念。OpenGL ES是一个基于状态机的API,它的操作会影响一系列的状态变量。这些状态变量包括颜色、深度...

    OpenGL三维绘图

    在VC中实现OpenGL三维绘图,MFC中使用opengl。

    C#+OpenGL绘图实例

    项目文件可能是Visual Studio解决方案文件,包含C#源代码项目,其中可能有`Program.cs`作为入口点,`OpenGLWindow.cs`用于处理窗口和OpenGL上下文,以及多个其他类来处理特定的图形任务。 学习这个实例,你可以了解...

    OpenGL绘图相关函数

    帧缓冲区存储了最终的像素点值,当缓冲区被清空时,图像会显示在屏幕上。这一过程可以简化为一个绘制流水线,其中每个阶段都处理特定的任务,直到图像最终呈现在用户眼前。 OpenGL的基本语法包括一系列的函数,这些...

    基于MFC的OpenGL绘图设置说明

    为了支持OpenGL,需要在视图类的`OnPreCreateWindow`函数中添加`WS_CLIPCHILDREN`和`WS_CLIPSIBLINGS`风格,这将确保窗口正确处理子窗口的重绘。 4. **编写OpenGL相关成员函数和变量**: 在视图类中添加用于设置...

    MFC框架的OpenGL绘画

    OpenGL是一种强大的图形编程接口,广泛应用于游戏开发、科学可视化、工程设计等领域。MFC(Microsoft Foundation Classes)是微软提供的一套面向对象的C++库,用于构建Windows应用程序。将OpenGL与MFC结合,可以在...

    OPENGL 3D绘图 源代码

    3. **图元**:OpenGL将一组顶点连接起来形成图元,如点、线段、三角形等。三角形是最基本的元素,几乎所有的3D模型都由三角面片组成。 4. **模型视图矩阵**:用于将模型坐标转换为观察坐标,包括模型变换(旋转、平...

    OpenGL绘图软件源代码

    通过OpenGL,开发者可以利用顶点、颜色、纹理等属性来创建和操纵这些形状,并通过各种渲染模式(如填充、线框或点描)来展现不同的视觉效果。 在OpenGL中,2D图形实际上是在3D空间内模拟的,通过将z坐标设置为常数...

    OpenGL.rar_OpenGL 三维绘图_opengl_opengl 绘图

    这些顶点可以表示三维空间中的点,然后通过OpenGL的图元装配和光栅化过程转换为屏幕上的像素。此外,还可以应用颜色、纹理、深度测试等属性,使得图形更加丰富和真实。 在代码实现中,我们通常会使用glBegin()和...

    opengl简单绘图

    OpenGL是用于创建2D和3D图形的强大框架,它是一个跨语言、跨平台的应用程序编程接口(API),广泛应用于游戏开发、科学可视化和工程建模等领域。在"opengl的简单绘图程序"中,我们将探讨如何使用OpenGL进行基本的...

    VC实现OpenGL三维绘图

    本篇将详细介绍如何在VC中实现OpenGL三维绘图,以及涉及的相关知识点。 首先,你需要在VC项目中包含OpenGL库。这可以通过在项目设置中添加链接器依赖项和头文件目录来完成。通常,你需要链接`opengl32.lib`、`glu32...

    1-2_opengl_绘制随机点_chief7ne_C++_

    在本项目“1-2_opengl_绘制随机点_chief7ne_C++_”中,我们关注的是如何在C++环境下利用OpenGL来生成并显示随机分布的点。这个项目可能是一个基础教程,旨在帮助初学者理解OpenGL的基本绘图操作。 首先,OpenGL是一...

    opengl 2d绘图

    此资源,采用qtcreator opengl技术,显示2d的图片,可以修改利用opengl显示多张图片

    简单的OpenGL 3D绘图程序 初学者必学

    简单的OpenGL 3D绘图程序 初学者必学

    opengl.rar_opengl_opengl绘图

    3. **图元(Primitives)**:由顶点组合成的基本形状,如点、线段、三角形等。 4. **坐标系统**:OpenGL使用右手坐标系,原点在屏幕中心,X、Y轴分别对应屏幕的左右和上下,Z轴指向观众。 5. **视口(Viewport)**...

    qt二维OPENGL绘图源码.zip

    2. **OpenGL绘图类**:一个继承自QOpenGLWidget的类,包含paintGL()函数,这是OpenGL绘制的主要入口点。在该函数中,会清除颜色缓冲区,设置投影和模型视图矩阵,然后执行实际的绘图操作。 3. **事件处理**:在...

    OpenGL.rar_MFC OpenGL绘图_mfc 实现document_opengl mfc 直线_opengl 绘图

    创建一个基于MFC 的Single Document 应用程序,利用OpenGL 进行图形的绘制: 1.实现OpenGL 绘图环境和Windows 绘图环境兼容。 2.利用OpenGL 绘图函数进行一些基本图形如直线、多边形的绘制。 3.利用OpenGL 设置...

    基于MFC+vs2010实现的Opengl绘图

    OpenGL是一种强大的图形编程接口,广泛应用于游戏开发、科学可视化等领域。在Windows环境下,结合Microsoft Foundation Classes (MFC) 和Visual Studio 2010,我们可以创建一个用户界面友好的应用程序来展示OpenGL...

    QT + OPenGL 绘图

    在开发过程中,开发者可能学习了以下关键知识点: 1. **QT集成OpenGL**:如何在QT项目中配置OpenGL支持,创建`QGLWidget`子类,并重写必要的生命周期函数,如`initializeGL()`和`paintGL()`。 2. **OpenGL上下文**...

Global site tag (gtag.js) - Google Analytics