OpenGL入门

本文介绍了OpenGL的入门知识,重点讲解了着色器的使用,包括顶点着色器和片段着色器在3D图形渲染中的作用。还详细阐述了OpenGL上下文窗口(GLFW库)的运用。内容涵盖OpenGL环境设置、基本图形的绘制步骤,如设置顶点数组、创建和绑定顶点缓存对象、定义顶点数组对象、设置着色器、绘制图元以及资源释放。此外,还提到了如何添加颜色到图形中。

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

OpenGL的运行结构

 着色器(Shader):用来实现图像渲染的,用来替代固定渲染管线的可编辑程序。

着色器代替了传统的固定渲染管线,可以实现3D图形学的相关计算,由于其可编辑性,可以实现各种各样的图像效果,而不用受显卡的固定渲染管线限制。

入门只学习顶点着色器(负责顶点的集合关系等的运算)和片段着色器(负责片源颜色等的计算)

OpenGL上下文窗口(GLFW库):C语言库,支持多窗口、多显示器和高分辨率显示,支持键盘、鼠标、游戏手柄、Windows事件的输入

一、改变OpenGL的初始化环境

#include <glad/glad.h>
#include <GLFW/glfw3.h>   //GLAD、GLFW文件
#include <iostream>

int winWidth = 600, winHeight = 600;

int main(int nargs, char *args[])
{
// initialization
glfwInit();
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);

// window creation
GLFWwindow* window = glfwCreateWindow(winWidth, winHeight, args[0], NULL, NULL);
if (window == NULL)
{
std::cout << "Failed to create GLFW window" << std::endl;
glfwTerminate();
return -1;
}
glfwMakeContextCurrent(window);

// load all OpenGL function pointers
if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress))
{
std::cout << "Failed to initialize GLAD" << std::endl;
return -1;
}
//在循环前加入代码
// render loop
while (!glfwWindowShouldClose(window))
{
//在循环中加入代码
// rendering

// swap buffers and poll IO events
glfwSwapBuffers(window);
glfwPollEvents();
}
//在循环后加入代码
// terminate, clearing all previously allocated GLFW resources.
glfwTerminate();

return 0;
}

 二、基本图形的绘制

1、设置图形(主循环前):定义顶点数组变量,定义并设置顶点缓存对象,设置顶点数组对象,设置着色器

2、绘制图形(主循环中):绘制顶点缓存对象中的图元

3、删除图形(主循环后):删除顶点缓存/数组对象以及着色器变量

(一)定义顶点数组(如位置、颜色、法向量、纹理坐标、其他属性等)

float trianglePositions[] = {
	-0.866f, -0.5f, 0.0f,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值