MAC Cocoa Opengl入门系列教程一(基本图元绘制)

来源:互联网 发布:js委托事件 编辑:程序博客网 时间:2024/04/28 08:24

本章节主要教大家使用opengl绘制基本图元


先看效果图:

       

                            图一.普通三角形(锯齿明显)   

  

                                图二. 多重采样三角形(线条平滑)

一.Opengl简单的介绍

1.opengl是什么东西?用它来干什么?也不是一两句话就能说的清楚,建议读者们先去百度搞清楚这些问题。
2.学opengl你要掌握什么知识?

答:首先你要对OpenGL感兴趣,其次掌握一个平台对界面开发,如osx 、ios、 windows 、安卓等平台,liux平台也可以。

对于新手我会推荐以下参考书籍或网络资源:

先读:蓝宝书OpenGL超级宝典》

其次:红宝书 OpenGL编程指南》

再次:橙宝书  OpenGL Shading Language》 GLSL着色语言

网络教程推荐:http://www.yakergong.net/nehe/   (windows下opengl开发教程,例子很多,重在理解)


二.Cocoa 建立opengl工程

1.直接建立"Cocoa Aplication"。


2.在MainMenu.xib文件中拖入一个OpenglView

      

  3.添加一个类OpenGLDrawView, 该类必须继承于NSOpenGLView。

OpenGLDrawView.h

#import <Cocoa/Cocoa.h>@interface OpenGLDrawView : NSOpenGLView@end
OpenGLDrawView.m

#import <OpenGL/gl.h>  ///加入opengl文件头#import <OpenGL/gl3.h> //#import "OpenGLDrawView.h"@implementation OpenGLDrawView//重写prepareOpenGL方法- (void)prepareOpenGL{ }- (void)drawRect:(NSRect)dirtyRect {    [super drawRect:dirtyRect];}


4.OpenGLDrawView关联到xib中到的OpenglView


5.添加OpenGL.framework

"项目"->"build phases"->"Link Binary With Libraries",添加OpenGL.framework.


6.工程配置完毕。

三.代码讲解

//重写prepareOpenGL方法- (void)prepareOpenGL{    glClearColor(0.0, 0.0, 0.0, 1.0);}- (void)drawRect:(NSRect)dirtyRect {    [super drawRect:dirtyRect];        glClear(GL_COLOR_BUFFER_BIT);        //定义三角形坐标点    static GLfloat vectexs[]={        -0.5,0,0,                0.5,0,0,        0,0.5,0    };        //定义颜色    static GLfloat colors[]={        1.0,0,0,        0,1.0,0,        0,0,1.0    };    //开启客户端顶点数组绘制功能    glEnableClientState(GL_VERTEX_ARRAY);    //开启客户端颜色数组绘制功能    glEnableClientState(GL_COLOR_ARRAY);    //指定顶点数组指针    glVertexPointer(3, GL_FLOAT, 0, vectexs);    //指定颜色数组指针    glColorPointer(3, GL_FLOAT, 0, colors);        //开始绘制    glDrawArrays(GL_TRIANGLE_STRIP, 0, 3);    glDisableClientState(GL_VERTEX_ARRAY);    glDisableClientState(GL_COLOR_ARRAY);        glFlush();    // Drawing code here.}
这里只讲解glDrawArrays(GL_TRIANGLE_STRIP, 0, 3)的含义,

GL_TRIANGLE_STRIP指的是绘制图形的方式,

0指从顶点数组的0索引开始

3为要绘制的顶点个数。

下面给出GL_TRIANGLE_STRIP等绘制方式等图形表达方式:


四.cocoa项目中开启图形多重采样

1.非常简单,在xib中把opengl view属性中的“sampling”设置一个值就行,如下图所示;


五.以上问题都非常简单,所以呢~!给大家送上几张效果图!

1.三维空间二维图形动画


2.3DMAX导出的关羽模型,3ds格式

3.freetype字体库在opengl中显示字体

0 0
原创粉丝点击