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

这篇教程介绍了如何在MAC上使用Cocoa与OpenGL进行图形开发,包括OpenGL的基本介绍,如何在Cocoa工程中创建OpenGL视图,代码讲解涉及图形绘制方式,以及如何开启图形多重采样以实现平滑线条效果。
摘要由CSDN通过智能技术生成

本章节主要教大家使用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中显示字体

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值