OpenGL Study 2

原创 2007年10月10日 20:28:00

Lesson02:

在前一课建立的Opengl窗口中绘制一个三角形和一个正方形。

//here we do all the drawings
bool DrawGLScene(GLvoid)
{
    
//clear the screen and the depth buffer
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    
//reset the current modelview matrix
    glLoadIdentity();

    
//move left 1.5 units,deep 6.0 units from current position
    
//move the model from (0,0,0) to (-1.5,0.0,-6.0),it can also be implemented by move the view point
    glTranslatef(-1.5f,0.0f,-6.0f);

    
//draw a triangle
    glBegin(GL_TRIANGLES);
        glVertex3f(
0.0f,1.0f,0.0f);
        glVertex3f(
-1.0f,-1.0f,0.0f);
        glVertex3f(
1.0f,-1.0f,0.0f);
    glEnd();

    
//move from (-1.5,0.0,-6.0) to (1.5,0.0,-6.0)
    glTranslatef(3.0f,0.0f,0.0f);

    
//draw a quad,the vertex is represented in the model coordinate
    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();

    
return true;
}

 绘制前先清除颜色缓存和深度缓存,将当前矩阵置为单位矩阵。

在该代码中没有使用视图变换,而是采用模型变换实现的。对于每个要绘制的图形,现使用glTranslatef()将局部坐标系的原点移动到适当的位置,然后在绘制时,就可以在局部坐标系中以原点为中心绘制相应图形了。

注意,glTranslatef()的参数是移动增量,是将当前位置移动指定的增量到目标位置,移动后当前矩阵值为目标位置的值。

绘制图形:在glBegin()和glEnd()指定图形的顶点坐标。

绘制三角形:采用GL_TRIANGLES参数,使用三个顶点绘制一个三角形,顶点要按逆时针的顺序列出;

绘制四边形:采用GL_QUADS参数,使用四个顶点,顶点按逆时针顺序列出

Lesson03

给图形着色,采用Flat coloring 和 Smooth Coloring 两种着色模式

//here we do all the drawings
bool DrawGLScene(GLvoid)
{
    
//clear the screen and the depth buffer
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    
//reset the current modelview matrix
    glLoadIdentity();

    
//move left 1.5 units,deep 6.0 units from current position
    
//move the model from (0,0,0) to (-1.5,0.0,-6.0),it can also be implemented by move the view point
    glTranslatef(-1.5f,0.0f,-6.0f);

    
//draw a triangle,with smooth coloring
    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();

    
//move from (-1.5,0.0,-6.0) to (1.5,0.0,-6.0)
    glTranslatef(3.0f,0.0f,0.0f);

    
//draw a quad,the vertex is represented in the model coordinate
    
//with flat coloring
    glColor3f(0.5f,0.5f,0.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();

    
return true;
}

 

对每个顶点都设置颜色后,Opengl会自动在不同顶点的不同颜色间进行插值,从而使颜色线性变换;

如果对某个顶点不设置颜色,则应用之前最后设置的颜色,例如在绘制四边形时,只在绘制第一个顶点时设置了颜色,则其他顶点采用相同颜色。

在Opengl中,视图矩阵,投影矩阵,颜色矩阵和纹理矩阵都只记录最后一次修改后的值。

OpenGL学习之路(一)

1 引子 虽然是计算机科班出身,但从小对几何方面的东西就不太感冒,空间想象能力也较差,所以从本科到研究生,基本没接触过《计算机图形学》。为什么说基本没学过呢?因为好奇(尤其是惊叹于三维游戏的逼真,如...
  • three_bird
  • three_bird
  • 2016年05月07日 10:58
  • 3285

CNKI E-Study与Endnote 的参考文献题录互导

CNKI E-Study中的参考题录导入到Endnote 在CNKI E-Study中,选中所要导出的参考文献,右键选择"导出文献题录" 然后在样式过滤器中选择"Endnote",然后...
  • marstonyjiang
  • marstonyjiang
  • 2016年08月25日 09:31
  • 3987

从零开始学习OpenGL ES之二 – 简单绘图概述

还有许多理论知识需要讨论,但与其花许多时间在复杂的数学公式或难以理解的概念上,还不如让我们开始熟悉OpenGL ES的基本绘图功能。 请下载OpenGL Xcode项目模板。我们使用此模板而...
  • eqera
  • eqera
  • 2014年02月05日 12:52
  • 3495

opengl study

  • 2012年11月04日 19:30
  • 644KB
  • 下载

(Computer Graphics) A 3D Case Study Using Opengl.zip

  • 2008年07月02日 11:20
  • 1015KB
  • 下载

JavaScript Study 2(类型、值和变量)

JavaScript数据类型分为:原始类型(数字、字符串、布尔值和特殊值【null、undefined】)和对象类型(Object,键值对组成)。JavaScript中,同时使用了字符串和数字,数字将...
  • u010413740
  • u010413740
  • 2016年12月02日 23:46
  • 150

10gR2 CRS case study: CRS would not start after reboot - stuck at /etc/init.d/init.cssd startcheck

Preface I had recently done a 10gR2 CRS installation on SuSE linux 9.3 (2.6.5.7-244 kernel) and not...
  • yusiyuuestc
  • yusiyuuestc
  • 2013年12月07日 09:57
  • 1036

PHP study 2 array function

1 数组函数中sort和asort的区别:sort会把键名变为0,1,2之类,不管你之前的数组是什么;但是asort在排序过程中会以键值为对象进行排序,但是键名不发生改变,并跟随者键值移动位置。【ar...
  • jo_say
  • jo_say
  • 2011年03月19日 14:29
  • 1879

LDD3 study note 2

这篇文章在note1的基础上,进一步记录实现一个ioctl要注意的地方。相关的代码在:https://github.com/wangzhou/scull.git, tag: scull_2...
  • scarecrow_byr
  • scarecrow_byr
  • 2017年01月01日 15:39
  • 191

Introduction to C++ for Financial Engineers-Study Notes 2(Ch8-Ch)

1.p140 设计继承层次时需要注意,否则可能陷入一些隐蔽的错误。
  • linkedin_21052839
  • linkedin_21052839
  • 2014年09月25日 16:14
  • 523
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:OpenGL Study 2
举报原因:
原因补充:

(最多只允许输入30个字)