Administrator
发布于 2024-07-15 / 2 阅读
0
0

OPENGL


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版本,获取驱动之中的函数指针

image-20240620145619608

GLFW和cmake配置

image-20240620151949034

【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版本,获取驱动之中的函数指针

是一个规范标准,对某些函数的支持

//函数加载

opengl 窗体



评论