非vip版opengl

  1. 环境搭建
    • 安装编译器和构建工具:在 Windows 上可以使用 Visual Studio,在 Linux 上可以使用 GCC 等编译器。确保编译器已正确安装并配置好环境变量。
    • 安装 OpenGL 库和相关辅助库(以 GLUT 为例)
      • Windows
        • 下载并安装 GLUT 库。可以从互联网上找到适合 Windows 的 GLUT 库文件(如 freeglut),将其解压后,把相关的头文件(通常在include文件夹)路径添加到编译器的包含目录中,库文件(通常在lib文件夹)路径添加到库目录中。同时,在链接器设置中添加对应的库文件名(如freeglut.lib)。
      • Linux
        • 通过包管理器安装 OpenGL 相关库,例如在 Ubuntu 系统中,在终端中运行sudo apt - get install freeglut3 - dev
      • Mac
        • Mac 系统自带 OpenGL 框架,对于 GLUT,可以使用brew install freeglut(如果已经安装了 Homebrew 包管理器)来安装。
  2. 基本代码结构
    • 包含头文件
      • 在 C++ 代码中,首先要包含 OpenGL 和 GLUT 相关的头文件。
      • 初始化函数init
  • 用于设置 OpenGL 的初始状态,如清除颜色、启用深度测试等。

  • 显示回调函数display

    • 这个函数是 OpenGL 的核心部分,用于绘制图形。每当需要重新绘制窗口内容时(例如窗口大小改变、窗口被遮挡后重新显示等情况),这个函数就会被调用。
  • 主函数main

    • 用于初始化 GLUT 库,设置显示模式、窗口大小、创建窗口,并且注册回调函数(如display函数),最后进入主循环。
  1. 图形绘制基础
    • 基本图形绘制
      • 使用glBeginglEnd函数来定义一组几何图元(如点、线、三角形等)。例如,绘制一个简单的点:
  • 其中GL_POINTS表示绘制点,glVertex3f用于指定点的坐标。还可以绘制线(GL_LINES)、三角形(GL_TRIANGLES)、四边形(GL_QUADS)等。
  • 颜色设置
    • 使用glColor3f函数来设置颜色,它接受三个参数,分别代表红、绿、蓝(RGB)颜色通道的值,范围是 0.0f 到 1.0f。例如,glColor3f(1.0f, 0.0f, 0.0f)表示设置为红色。
  • 坐标系统和变换
    • OpenGL 有自己的坐标系统,默认的坐标范围是从 - 1 到 1。可以使用glTranslatef函数进行平移,glRotatef函数进行旋转,glScalef函数进行缩放等操作来改变图形在三维空间中的位置、方向和大小。
  1. 交互和事件处理
    • 键盘事件处理
      • 通过注册键盘回调函数来处理键盘事件。
  • 然后在main函数中使用glutKeyboardFunc(keyboard)来注册这个函数。
  • 鼠标事件处理
    • 类似地,可以注册鼠标回调函数来处理鼠标的点击、移动等事件。例如,处理鼠标点击事件:
  • 并在main函数中使用glutMouseFunc(mouse)来注册这个函数。
  1. 高级主题(纹理、光照等)
    • 纹理映射
      • 纹理映射可以使图形表面具有更真实的外观。首先要加载纹理图像,然后将纹理坐标与图形顶点坐标相关联。
  • 光照效果
    • OpenGL 可以模拟光照效果,包括环境光、漫反射光、镜面反射光等。首先要设置光照参数,如光源位置、光的颜色等,然后设置物体的材质属性。例如:
  • 并且要启用光照(glEnable(GL_LIGHTING))和相应的光源(glEnable(GL_LIGHT0)等)。这些高级主题需要更深入的学习和实践来掌握。
相关推荐
hansang_IR2 小时前
【题解】LC:Z 算法(Z Algorithm)
c++·算法·字符串
噗噗夹的TA之旅2 小时前
Shader 学习 21:自定义 Render Feature
学习·游戏·unity·c#·游戏引擎·图形渲染
范什么特西2 小时前
回答知识总结02
算法·哈希算法
techdashen2 小时前
Go设计取舍之六: sync.Mutex正常模式与饥饿模式
开发语言·后端·golang
橘子汽水1682 小时前
Leetcode 230,98:二叉搜索树中第K小的元素,验证二叉搜索树
算法·leetcode·职场和发展
TunerT_TQ2 小时前
【智能体安全治理|专栏第9期】从“一堆规则”到“数字宪法”:智能体治理的下一个阶段
java·开发语言·安全·开源治理·大模型安全·ai基础设施·智能体安全
Aurorar0rua2 小时前
CS50 x 2024 Notes Algorithms - 07
c语言·开发语言·学习方法
m沐沐2 小时前
【机器学习】DBSCAN聚类算法——原理、参数调优与实战
人工智能·python·深度学习·算法·机器学习·聚类·dbscan
网络研究院2 小时前
一款利用人工智能将电子游戏翻译成任何语言的桌面应用程序
人工智能·游戏·工具·平台·翻译·软件
问商十三载3 小时前
GEO优化的6个核心诊断工具,2026年实操版详解
人工智能·算法·机器学习