OPENGL 图形学
开始于 :2024/6/20
CMake
CMake工程的创建
创建一个CMakeLists.txt和main.cpp就行
#需求最低的cmake程序版本
cmake_minimum_required(VERSION 3.12)
#本工程的名字
project(OpenGL)
#本工程支持的C++版本
set(CMAKE_CXX_STANDARD 17)
#本工程主程序文件及输出程序名称
add_executable(glStudy "main.cpp")
如何运行:
选择打开cmake文件夹环境vs自己搭建,没搭好可以把对应文件夹里的vs文件删了,out也不用自己搭。改文件格式,后要保存
多c++文件的编译
CMakeLists.txt
#需求最低的cmake程序版本
cmake_minimum_required(VERSION 3.12)
#本工程的名字
project(OpenGL)
#本工程支持的C++版本
set(CMAKE_CXX_STANDARD 17)
#搜索所有的cpp,加入SRCS变量中
aux_source_directory(. SRCS)
#本工程所有cpp文件编译链接,生成exe,${}是释放变量SRCS里的函数
add_executable(glStudy ${SRCS})
func.h
#pragma once //避免重复使用函数,仅运行一次
int adds(int a, int b); //一般不实现函数内容,放在对应的cpp里实现
func.cpp
#include"func.h" //要引用对应的头文件,实现具体的函数
int adds(int a, int b) {
return a + b;
}
main.cpp
#include<iostream>
#include"funcs/func.h" //多文件夹下要具体到
int main() {
std::cout << "ez shoutu" << std::endl;
std::cout << adds(100, 200) << std::endl;
//编译成功只是没有语法错误,实际上有声明没实现是在链接阶段报错的,比如adds不是实现不会报错
return 0;
}
多文件夹编译
test/CMakeLists.txt
#需求的最低cmake程序版本
cmake_minimum_required(VERSION 3.12)
#本工程的名字
project(glStudy)
#本工程支持的C++版本
set(CMAKE_CXX_STADNARD 17)
#将funcs文件纳入到编译系统
add_subdirectory(funcs)
#搜索所有的cpp,加入SRCS变量中
aux_source_directory(. SRCS)
#本工程所有的cpp文件编译链接,生成exe
add_executable(glStudy ${SRCS})
#将funcs.lib链接入softRender Myfuncs和另一个lib命对应就行
target_link_libraries(glStudy Myfuncs)
test/funcs/CMakeLists
#递归将本文件夹下所有cpp放到FUNCS中
file(GLOB_RECURSE FUNCS ./ *.cpp)
#将FUNCS中所有cpp编译为Myfuncs这个lib库
add_library(Myfuncs ${FUNCS})
资源拷贝
希望把在main中用到的资源拷贝到运行的文件out中
多编译目标
#需求最低的cmake程序版本
cmake_minimum_required(VERSION 3.12)
#本工程的名字
project(OpenGL)
#本工程支持的C++版本
set(CMAKE_CXX_STANDARD 17)
#搜索所有的cpp,加入SRCS变量中,因为有两个main所以不能全搜
#aux_source_directory(. SRCS)
#本工程所有cpp文件编译链接,生成exe,${}是释放变量SRCS里的函数
add_executable(glStudy "main.cpp")
add_executable(main2 "main2.cpp")
#将myFuncs链接入glStudy
target_link_libraries(glStudy myFuncs)
OpenGL的库
GLFW:是一个专门针对OpenGL的C语音库,它提供了一些渲染物体所需的最低限度的接口
1.跨平台的窗体生成API系统
2.与OpenGL便携链接
3.方便的鼠标键盘消息回调函数
Glad: 根据不同的OpenGL版本,获取驱动之中的函数指针
GLFW和cmake配置
【B站最好OpenGL】12-工程管理-GLFW编译流程哔哩哔哩bilibili
GLFW链接
#需求的最低cmake程序版本
cmake_minimum_required(VERSION 3.12)
#本工程的名字
project(OpenGL_lecture)
#本工程支持的C++版本
set(CMAKE_CXX_STADNARD 17)
#给定查找的路径信息,每次include库时不用全大
include_directories(
SYSTEM ${CMAKE_CURRENT_SOURCE_DIR}/thirdParty/include
)
#链接阶段连上lib告诉在哪里找
link_directories(
SYSTEM ${CMAKE_CURRENT_SOURCE_DIR}/thirdParty/lib
)
#本工程所有的cpp文件编译链接,生成exe
add_executable(glStudy "main.cpp")
#把库合成到可执行程序中
target_link_libraries(glStudy glfw3.lib)
Glad:根据不同的Opengl版本,获取驱动之中的函数指针
是一个规范标准,对某些函数的支持
//函数加载