渲染管线&项目创建

一、渲染管线知识

1、OpenGL渲染过程介绍

渲染过程、定点输入、顶点着色器、编译着色器、片元着色器、着色器程序、链接顶点属性、顶点数组对象、索引缓冲对象:

https://blog.csdn.net/weixin_45782925/article/details/124822990

2、渲染管线流程

https://blog.csdn.net/aoxuestudy/article/details/124444112

3、图元、片元,渲染架构

[https://zhuanlan.zhihu.com/p/549136586]

二、创建项目

1.在vs工程项目目录下创建空项目

QQ图片20221201153051

2.在vs源文件文件夹下创建.cpp文件

QQ图片20221201153056

3.在新建项目目录下导入着色器文件

QQ图片20221201153059

4.修改CMakeLists.txt文件,在相关位置添加如下

QQ图片20221201153113

QQ图片20221201153115

5.依次点击

QQ图片20221201153103

6.vs新建项目目录下自动导入相关文件

QQ图片20221201153106

7.新建项目目录下会生成exe可执行文件

QQ图片20221201153109

三、CMakeLists.txt

cmake指令详解:http://t.zoukankan.com/lidabo-p-7359217.html

变量解释:http://www.360doc.com/content/19/1204/17/6959565_877409038.shtml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#设置cmake的最小版本
cmake_minimum_required (VERSION 2.6)

#设置项目名称
project (Tutorials)

#设置构架类型,用debug模式编译
set(CMAKE_BUILD_TYPE "Debug")

#mesa是Linux下的OpenGL实现,如下代码包含mesa
find_package(OpenGL REQUIRED)

#关于目录的报错提醒
if( CMAKE_BINARY_DIR STREQUAL CMAKE_SOURCE_DIR )
message( FATAL_ERROR "Please select another Build Directory ! (and give it a clever name, like bin_Visual2012_64bits/)" )
endif()
if( CMAKE_SOURCE_DIR MATCHES " " )
message( "Your Source Directory contains spaces. If you experience problems when compiling, this can be the cause." )
endif()
if( CMAKE_BINARY_DIR MATCHES " " )
message( "Your Build Directory contains spaces. If you experience problems when compiling, this can be the cause." )
endif()

#将子目录添加到构建,外部依赖项
add_subdirectory (external)

# 在Visual 2005及更高版本上,此模块可以设置调试工作目录
#管理cmake策略设置
cmake_policy(SET CMP0026 OLD)
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/external/rpavlik-cmake-modules-fe2273")
include(CreateLaunchers)
include(MSVCMultipleProcessCompile) # /MP

#添加子目录
if(INCLUDE_DISTRIB)
add_subdirectory(distrib)
endif(INCLUDE_DISTRIB)

#向工程添加多个特定的头文件搜索路径
include_directories(
external/AntTweakBar-1.16/include/
external/glfw-3.1.2/include/GLFW/
external/glm-0.9.7.1/
external/glew-1.13.0/include/
external/assimp-3.0.1270/include/
external/bullet-2.81-rev2613/src/
.
)

#将要链接的库名统一叫ALL_LIBS
set(ALL_LIBS
${OPENGL_LIBRARY}
glfw
GLEW_1130
)

#宏定义
add_definitions(
-DTW_STATIC
-DTW_NO_LIB_PRAGMA
-DTW_NO_DIRECT3D
-DGLEW_STATIC
-D_CRT_SECURE_NO_WARNINGS
)

# Tutorial 1

#添加一个可执行文件目标
#第一行:可执行文件
#第二行之后:由source列出的源文件(cpp/hpp/着色器文件)构建而来(源文件路径)
add_executable(tutorial01_first_window
tutorial01_first_window/tutorial01.cpp
)

#设置目标要连接库文件的名称
target_link_libraries(tutorial01_first_window
${ALL_LIBS}
)

#设置目标属性
# set_target_properties(目标 PROPERTIES 属性1 值1 属性2 值2)
#设置XCODE属性配置生成目录
set_target_properties(tutorial01_first_window PROPERTIES XCODE_ATTRIBUTE_CONFIGURATION_BUILD_DIR "${CMAKE_CURRENT_SOURCE_DIR}/tutorial01_first_window/")
#设置工作目录
#create_default_target_launcher设置默认工作目录
create_target_launcher(tutorial01_first_window WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/tutorial01_first_window/")

#划分目录结构
#将common目录下面的文件全部分组为common
SOURCE_GROUP(common REGULAR_EXPRESSION ".*/common/.*" )
SOURCE_GROUP(shaders REGULAR_EXPRESSION ".*/.*(shader|vert|frag)$" )

#CMake针对不同平台支持本地构建工具列表。同时支持命令行工具和集成开发环境(IDE)工具。
#如果生成器不为Xcode工具
if (NOT ${CMAKE_GENERATOR} MATCHES "Xcode" )
#命令执行
#TARGET 目标 POST_BUILD命令将会在目标构建完后执行
#复制文件 当前正在被处理的二进制目录路径/与构建配置相对应的输出子路径/目标 本平台上可执行文件后缀 正在被处理的源码目录路径
add_custom_command(
TARGET tutorial01_first_window POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/tutorial01_first_window${CMAKE_EXECUTABLE_SUFFIX}" "${CMAKE_CURRENT_SOURCE_DIR}/tutorial01_first_window/"
)

elseif (${CMAKE_GENERATOR} MATCHES "Xcode" )
endif (NOT ${CMAKE_GENERATOR} MATCHES "Xcode" )
Donate
  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.

扫一扫,分享到微信

微信分享二维码

请我喝杯咖啡吧~

支付宝
微信