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中,视图矩阵,投影矩阵,颜色矩阵和纹理矩阵都只记录最后一次修改后的值。

用VC++编制FTP客户端应用程序

用VC++编制FTP客户端应用程序  FTP协议将使用两条单独的TCP连接,一条专用于发送FTP命令,另一条则专用于传递数据。初始建立连接时,服务器在21号端口上接收来自客户端的命令连接。当需要传送数...
  • ghj1976
  • ghj1976
  • 2001-08-20 11:36:00
  • 1512

OpenGL学习之路(一)

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

西蒙iphone-OpenGL ES 教程-01

  • 2016年01月06日 13:26
  • 260KB
  • 下载

Study OpenGL

A Good Blog For OpenGL Study http://wiki.livedoor.jp/mikk_ni3_92/
  • Tangyongkang
  • Tangyongkang
  • 2010-03-24 15:03:00
  • 355

OpenGL Study

GL_Studygl与makefile Developing in OpenGL Using Makefiles 高效学习OpenGL
  • cortex_m3_
  • cortex_m3_
  • 2017-06-11 14:16:09
  • 87

opengl study

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

CCNA Routing and Switching Practice Tests: Exam 100-105, 200-105,200-125

  • 2017年03月29日 21:25
  • 12.44MB
  • 下载

【OpenGL ES 2.0】如何显示出非2的N次幂的贴图。(NPOT)

在绑定纹理后,添加下面四行代码 glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameterf(...
  • mvplinchen888
  • mvplinchen888
  • 2013-11-25 16:36:37
  • 1182

OpenGL 中贴长宽不为2的幂的纹理的方法(李传中)

 1,一幅120×120 的24 位位图,文件名为“木材.bmp”。由于它的宽度w 和高度均不为2 的幂,所以对于OpenGL2.0 以下版本,该图像不能直接用于纹理图像贴图,是非规则纹理图像。下面我...
  • Crazyjumper
  • Crazyjumper
  • 2007-09-24 22:31:00
  • 3311

OpenGL基础````````

  • 2010年04月23日 19:47
  • 842KB
  • 下载
收藏助手
不良信息举报
您举报文章:OpenGL Study 2
举报原因:
原因补充:

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