OpenGL-案例-环境搭建

本文介绍了如何使用OpenGL和GLUT库在macOS上创建一个应用,绘制并动态移动一个红色正方形。首先,配置项目环境,导入依赖库,修改头文件。接着,创建main函数,设置渲染环境,初始化GLUT,注册回调函数。然后,实现着色器管理,定义顶点数据,绘制正方形。在键盘监听中,通过平移和旋转矩阵更新正方形位置。最后,调整代码以使用矩阵计算顶点,实现更复杂的图形变换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

配置环境

创建项目

打开Xcode -> File -> New -> Project,在弹框中选择macOS->App。

在这里插入图片描述

导入依赖库

下载libGLTools,找到GL和include文件夹以及libGLTools.a文件,将这三个文件导入到项目中,并在Build Settings -> Library Search Paths添加路径;点击TARGETS -> General -> Frameworks,Libraries,and Embedded Content,导入系统库OpenGL.framework和GLUT.framework。

在这里插入图片描述
在这里插入图片描述

修改头文件

下载的头文件中多处内部文件的引用都用的是尖括号,需要手动改成双引号,要不然导入这些头文件时编译报错,类似于’math3d.h’ file not found with include; use “quotes” instead错误。
在这里插入图片描述

创建main函数

删除AppDelegate、ViewController、main等几个自动生成的类文件,新创建一个C++文件main.cpp,注意不需要main.hpp文件。

在这里插入图片描述

绘制正方形

手动计算顶点

定义变量

#include <stdio.h>
/**
 GLShaderManager:着色器管理器类。没有着色器,我们就不能在OpenGL(核心框架)进行着色。着色器管理器不仅允许我们创建并管理着色器,还提供一组“存储着色器”,他们能够进行一些基本的渲染操作。
 */
#include "GLShaderManager.h"
//GLTools:包含了大部分GLTool中类似C语言的独立函数
#include "GLTools.h"
#include <GLUT/GLUT.h>

//着色管理器
GLShaderManager shaderManager;
//简单的批次容器,是GLTools的一个简单的容器类。
GLBatch triangleBatch;
//正方形边长
GLfloat blockSize = 0.1f;
//指定顶点。在OpenGL中,三角形是一种基本的3D图元绘图原素。
GLfloat vVerts[] = {
    -blockSize, -blockSize, 0.f,
    blockSize, -blockSize, 0.f,
    blockSize, blockSize, 0.f,
    -blockSize, blockSize, 0.f
};

int main(int argc, char* argv[]) {
    return 0;
}

导入头文件GLShaderManager.h、GLTools.h、GLUT/GLUT.h,定义着色器管理类shaderManager和简单批次类triangleBatch,创建main函数作为程序入口。

GLShaderManager: 着色器管理类。在下面会用到着色器渲染颜色,所以需要用到着色器管理类来初始化固定管线。

GLBatch: 简单的批次类,帮助类。这个类可以作为7种图元的简单批次容器使用。而且它知道在使用GLShaderManager支持的任意存储着色器时如何对图元进行渲染。利用它可以传输顶点/光照/纹理/颜色数据到存储着色器中。

blockSize: 表示正方形边长的一半,顶点数据范围是0~1,这里定义正方形的边长为0.2f。

vVerts: 定义一个包含10个元素的一位数组来表示正方形顶点数据,其中没三个点(x、y、z)表示一个点,一共4个点,依次表示左下(A)、右下(B)、右上(C)、左上(D)4个顶点。如下图

在这里插入图片描述

实现main函数

int main(int argc, char* argv[]) {
    //初始化GLUT库
    glutInit(&argc, argv);
    //GLUT窗口位置
    glutInitWindowPosition(100,100);
    //GLUT窗口大小
    glutInitWindowSize(800, 600);
    //创建窗口
    glutCreateWindow(&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值