Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
623 commits
Select commit Hold shift + click to select a range
c42cc20
Rephrased Drawing a triangle -> Rendering and presentation
Jun 15, 2019
b289600
Rephrased Drawing a triangle -> Swap chain recreation
Jun 15, 2019
7e449a0
Rephrased Introduction
Jun 15, 2019
c72a930
Quick last changes to Introduction
Jun 15, 2019
b8800df
Rephrased and renamed Vertex buffer -> Vertex input description
Jun 16, 2019
fd444f8
Rephrased Vertex buffer -> Vertex buffer creation
Jun 16, 2019
c2be500
Rephrased Vertex buffer -> Staging buffer
Jun 16, 2019
1226657
Rephrased Vertex buffer -> Index buffer
Jun 16, 2019
acf60b5
Translated folder names to French
Jun 16, 2019
07e73d3
Rephrased Uniform buffers -> Descriptor layout and buffer
Jun 16, 2019
f2070a3
Rephrased Uniform buffers -> Descriptor pool and sets
Jun 16, 2019
8cd8a2c
Rephrased Uniform buffers -> Images
Jun 16, 2019
e8340d3
Rephrased and renamed Texture mapping -> Image view and sampler
Jun 17, 2019
91557fc
Rephrased and renamed Texture mapping -> Combined image sampler
Jun 17, 2019
f692205
Rephrased and renamed Depth buffer
Jun 17, 2019
f3cd785
Rephrased and renamed Loading models
Jun 17, 2019
dd32c4f
Rephrased and renamed Generating mipmaps
Jun 17, 2019
799d6c9
Rephrased Multisampling
Jun 17, 2019
b5093ef
Rephrased the FAQ
Jun 17, 2019
959284c
Removed inconsistent capital letters in titles
Jun 17, 2019
9223e69
Reworked introduction to be as appealing as possible
Jun 17, 2019
78df325
Caught up with all the updates to the English version
Jun 17, 2019
294e3c3
Added translation of privacy policy
Jun 17, 2019
ab4317f
add generation for multy language
Jun 17, 2019
7a01988
remove BOM from file and remove file from génération of html
Jun 17, 2019
1e0cd32
correct future link for pdf and epub
Jun 17, 2019
7137403
Just a little change in the script to make it nicer
Jun 17, 2019
3ba5990
Change to new theme name
Overv Jul 7, 2019
ecbe631
Change privacy policy to no longer be a special case page for navigation
Overv Jul 7, 2019
5d168d8
Switch to new Daux deployment
Overv Jul 8, 2019
720bc72
Fix privacy policies having extra header and rebuild ebooks
Overv Jul 8, 2019
3917f83
Change validation layer chapter to specify that debug messengers are …
Overv Jul 13, 2019
e0d36fe
Remove outdated section about driver support for VK_PRESENT_MODE_FIFO…
Overv Jul 15, 2019
acd19c8
Change validation layer chapter
Krenodeno Jul 18, 2019
9752a52
Merge pull request #142 from MacGamerFR/patch-4
Overv Jul 18, 2019
c07a344
fix xcode-paths picture
Shikugawa Jul 24, 2019
c70c364
Remove SIMULTANEOUS_USE flag from draw command buffers as this is not…
Overv Jul 24, 2019
5d994f0
Merge pull request #143 from Shikugawa/fix-xcode-paths
Overv Jul 25, 2019
ddb1aa5
Change shader compilation to use glslc rather than glslangvalidator
Overv Jul 28, 2019
4440cad
Update required C++ and compiler version
LesleyLai Jul 29, 2019
46ce27c
Merge pull request #145 from LesleyLai/patch-1
Overv Jul 29, 2019
98e518f
Clarify debug messenger code position
Overv Aug 7, 2019
47b093b
Fix old references to setupDebugCallback
Overv Aug 15, 2019
c5be771
Fix clockwise/counter-clockwise mixup
Overv Aug 22, 2019
439ea47
Clarify use of std::optional (fixes #147)
Overv Aug 24, 2019
f2b4a1c
Drop numeric_limits in favour of limits in stdint.h
Overv Aug 24, 2019
58d73f5
Remove redundant depth image transition
Overv Sep 23, 2019
ceb4199
Remove redundant queueCount checks
Overv Oct 22, 2019
9f66dd1
Fix broken patch of queueCount
Overv Oct 24, 2019
6fcc422
Improve correctness of statement about srcSubpass/dstSubpass requirem…
Overv Oct 25, 2019
a9a88be
Fix frames in flight synchronization edge case
Overv Oct 28, 2019
9d280f3
Update ebooks
Overv Oct 28, 2019
cdb08cf
Fix bad vkResetFences placement in triangle chapter
Overv Nov 3, 2019
9c28de9
Remove superfluous transition from multisampling chapter
Overv Nov 3, 2019
92fe220
Fix logic of getMaxUsableSampleCount
Overv Nov 8, 2019
612b58c
Remove irrelevant flag from draw command buffers
Krenodeno Nov 18, 2019
ac92f02
Use GLSLC instead of GlslangValidator
Krenodeno Nov 18, 2019
7da8898
fix typo
Krenodeno Nov 18, 2019
53b2e68
update C++ compiler requirements
Krenodeno Nov 18, 2019
563f1b0
Fix clockwise/counterclockwise mixup
Krenodeno Nov 18, 2019
3f339d1
clarify use of std::optional
Krenodeno Nov 18, 2019
2f3cf07
remove redundant depth image transition
Krenodeno Nov 18, 2019
37c06ba
improve correctness of subpasses dependencies
Krenodeno Nov 18, 2019
c73725f
Fix frames in flight sync edge case
Krenodeno Nov 18, 2019
beea0d3
fix bad vkResetFences call place
Krenodeno Nov 18, 2019
989b24f
remove superfluous transitions from multisampling
Krenodeno Nov 18, 2019
ef70365
fix logic of getMaxUsaleSampleCount
Krenodeno Nov 18, 2019
2c551bf
Fix possible freeze in recreateSwapChain
Overv Nov 21, 2019
7eb5590
Fix possible freeze in recreateSwapChain
Krenodeno Nov 27, 2019
e4130cb
Merge pull request #155 from MacGamerFR/French-update
Overv Nov 30, 2019
1e7aabb
Update name of vkcube executable
Overv Dec 17, 2019
8a84832
Remove reference to nonexistent Docs directory
Overv Dec 17, 2019
346b497
Note the possibility of validation layer errors rather than increasin…
Overv Jan 7, 2020
bcca3e4
Note the possibility of validation layer errors
Krenodeno Feb 4, 2020
85d6868
Merge pull request #164 from MacGamerFR/patch-5
Overv Feb 4, 2020
2baf477
Update validation layer chapter for newer SDK behaviour
Overv Feb 4, 2020
6f1882c
Fix tutorial mixing up linear and SRGB colors (fixes #163)
Overv Feb 5, 2020
c9151f7
Add link to Java port of the tutorial (#165)
Overv Feb 21, 2020
d22a355
Update tutorial images to correctly represent interpolation in linear…
Overv Mar 15, 2020
56389ad
Update ebooks
Overv Mar 15, 2020
c2b850a
Remove pointless access mask bit (fixes #168)
Overv Mar 17, 2020
f594383
Dev env: Update min compiler requirements for C++17
akien-mga Mar 22, 2020
5032a68
Merge pull request #170 from akien-mga/dev-env-c++17
Overv Mar 23, 2020
f68735c
fix #171 boken links; E-book epub/pdf
usagi Mar 27, 2020
3d6725d
Merge pull request #172 from usagi/fixup-broken-links
Overv Mar 27, 2020
2171557
Code: Use uint32_t for WIDTH and HEIGHT to prevent narrowing conversion
akien-mga Apr 7, 2020
03e8ea7
Merge pull request #174 from akien-mga/WIDTH-HEIGHT-uint32_t
Overv Apr 7, 2020
f81fde8
Fixed some typos
tsonge Apr 16, 2020
b87aa27
Remove unused header and improve C++ wording
vittorioromeo Apr 17, 2020
8358f43
Improve wording and C++ usage
vittorioromeo Apr 17, 2020
238d236
Merge pull request #175 from tsonge/master
Overv Apr 18, 2020
16cb531
Merge pull request #176 from SuperV1234/patch-1
Overv Apr 18, 2020
de17297
Fix wrong texture coordinates in texture mapping chapter
Overv Apr 19, 2020
a55eb00
Fix MacOS paths for the latest version of the SDK
Overv Apr 19, 2020
bfd6ce9
Merge pull request #177 from SuperV1234/patch-2
Overv Apr 19, 2020
64edd11
Optimize newlines (extension of #177)
Overv Apr 19, 2020
1d6b5b0
Change code to use value initialization
Overv Apr 19, 2020
8ce6698
Fix syntax error
Overv Apr 20, 2020
90aa269
Replace example 3D model with permissively licensed one
Overv Apr 28, 2020
a009702
an error in the translate
celestecote21 May 2, 2020
94037f9
Fix typo
morganw-code May 3, 2020
b28aefa
Merge pull request #179 from morganw-code/patch-1
Overv May 3, 2020
724e927
Merge pull request #178 from celestecote21/master
Overv May 3, 2020
426f9d5
Fix wrong VkSamplerCreateInfo type assignments.
pablode May 5, 2020
bbbee1d
Merge pull request #180 from pablode/samplerinfo-type-fix
Overv May 7, 2020
94ece90
Fixed queue family bit name
LittleWhite-tb May 17, 2020
d8d808d
Superfluous semi-colon
LittleWhite-tb May 19, 2020
d69d4b1
Merge pull request #184 from LittleWhite-tb/patch-2
Overv May 19, 2020
420b221
Merge pull request #183 from LittleWhite-tb/patch-1
Overv May 19, 2020
5253cee
fixes typos and several other small defects
LittleWhite-tb May 26, 2020
ecd1343
Fix merge conflict
LittleWhite-tb May 26, 2020
2314752
Fixes my own mistakes
LittleWhite-tb May 26, 2020
a2a2335
Merge branch 'fixes-fr2' of https://github.com/LittleWhite-tb/VulkanT…
Overv May 26, 2020
376bef0
Fix file permissions
Overv May 26, 2020
67a0c45
Merge branch 'LittleWhite-tb-fixes-fr2'
Overv May 26, 2020
2313d5e
Update FAQ link
Overv May 29, 2020
37e4d54
Replace dead link to transformation matrices guide
Overv Jun 3, 2020
bf620e9
fix typo in 01_Swap_chain.md
ericoporto Jun 21, 2020
998d1d1
Merge pull request #190 from ericoporto/patch-1
Overv Jun 21, 2020
1fc78f6
Update 02_Fonctions_fixées.md
Jun 28, 2020
7ba8366
Fix typo
arcturu Jun 28, 2020
d0fe89c
Merge pull request #192 from arcturu/patch-1
Overv Jun 28, 2020
167cd81
Merge pull request #193 from Vorps/patch-1
Overv Jul 20, 2020
4e0f304
Dev env: fix #189; setting up Vulkan on Linux needs updates
abnercoimbre Aug 23, 2020
d975576
Merge pull request #198 from abnercoimbre/master
Overv Aug 25, 2020
03836d5
update french translation of setup chapter
Krenodeno Sep 1, 2020
7a702f0
Merge pull request #199 from Krenodeno/patch-6
Overv Sep 1, 2020
b44f167
fix typos
Krenodeno Sep 8, 2020
47eef7e
Merge pull request #200 from Krenodeno/patch-7
Overv Sep 8, 2020
c895f88
Update screenshot of validation layer message
Overv Sep 8, 2020
d341d5a
Add missing LDFLAGS
Overv Sep 8, 2020
cf13048
Fix typo
maltekliemann Sep 13, 2020
b57e177
Add remark regarding queue type for vkCmdBlitImage
maltekliemann Sep 13, 2020
b697a9f
Merge pull request #205 from maltekliemann/fix/typo-vkCmdBlitImage
Overv Sep 17, 2020
64832b8
Merge pull request #206 from maltekliemann/ref/dedicated-transfer-que…
Overv Sep 17, 2020
661eb79
Remove confusing remark about depthWriteEnable
Overv Sep 17, 2020
2b9b24f
Fix typo
maltekliemann Oct 4, 2020
6c709b8
Fix chooseSwapExtent for HDPI/retina displays
maltekliemann Oct 4, 2020
61ceb30
Merge pull request #208 from maltekliemann/patch-1
Overv Oct 5, 2020
7ff694b
Update FAQ Link
LittleWhite-tb Oct 9, 2020
0fff4b1
Fix typo on function name
LittleWhite-tb Oct 9, 2020
46b4e26
Use french translation for tutorial link
LittleWhite-tb Oct 9, 2020
9d0fe78
Fix typos
LittleWhite-tb Oct 9, 2020
339c48d
Sync with new flags for GLFW
LittleWhite-tb Oct 9, 2020
6fca04a
Add remark regarding queue type
LittleWhite-tb Oct 9, 2020
994b5be
Remove confusing remark about depthWriteEnable
LittleWhite-tb Oct 9, 2020
8f7cc95
Merge pull request #211 from LittleWhite-tb/sync-fr
Overv Oct 10, 2020
f0f4207
Incorporate changes to chooseSwapExtent
maltekliemann Oct 6, 2020
4f9f405
Update GLFW setup instructions for macOS
jpaquim Oct 23, 2020
d2d23cc
Fix description of vkAllocateDescriptorSets error
maltekliemann Oct 27, 2020
af27607
Spelling
Overv Oct 27, 2020
4ece62e
Merge pull request #210 from maltekliemann/fix/hdpi-swapchain-extent
Overv Oct 27, 2020
e7156e6
Merge pull request #212 from jpaquim/patch-1
Overv Oct 27, 2020
6393c07
Fix syntax error in depth chapter (thanks Nic Canning)
Overv Oct 27, 2020
f257236
Merge pull request #213 from maltekliemann/fix/combined-image-sampler…
Overv Oct 28, 2020
1caae48
Fix potential synchronization problem with depth buffer transition an…
Overv Nov 6, 2020
baa107b
Fix mirrored texture coordinates in tutorial (fixes #215)
Overv Nov 12, 2020
e23e906
Add `spirv-tools` package to 02_Development_environment.md
jsgoller1 Nov 22, 2020
6e3e28e
Fix maxSamplerAnisotropy limit not verified (fixes #216)
Overv Nov 29, 2020
a2b2fc3
Merge pull request #218 from jsgoller1/patch-1
Overv Nov 29, 2020
99f5233
Update 00_Window_surface.md
mrsaleh Jan 13, 2021
8f8b0dd
Update 00_Window_surface.md
mrsaleh Jan 13, 2021
444260e
Update 05_window_surface.cpp
mrsaleh Jan 13, 2021
8c972e4
Update 00_Window_surface.md
mrsaleh Jan 13, 2021
e5fc806
Fix french typo
punkymaniac Jan 21, 2021
d80d8f9
Merge pull request #223 from punkymaniac/patch-1
Overv Jan 29, 2021
2c7ccbe
Restore 05_window_surface.cpp
Overv Jan 29, 2021
6c028cf
Update 00_Window_surface.md
Overv Jan 29, 2021
5827414
Merge pull request #222 from mrsaleh/patch-1
Overv Jan 29, 2021
290d65c
Be more explicit about extra include for std::min/std::max (fixes #225)
Overv Feb 20, 2021
7619952
Ensure that imagesInFlight has the right size after swap chain recrea…
Overv Feb 20, 2021
131d519
Add link to VS2019 sample repo
Overv Apr 2, 2021
eca5a20
Add instructions for Fedora setup
bkmgit Apr 8, 2021
7f739dd
Instructions for setup on Fedora in French.
bkmgit Apr 8, 2021
69148cb
Merge pull request #234 from bkmgit/bkmgit-Fedora-Setup-English
Overv May 13, 2021
ded3cb8
Merge pull request #235 from bkmgit/bkmgit-Fedora-setup-French
Overv May 13, 2021
f4b6177
Update ebook script to work with new Inkscape versions
Overv May 13, 2021
83c78c3
Clarify presentation mode explanations (fixes #237)
Overv May 13, 2021
c9c2762
Add proper cover image to epub versions of ebook
Overv May 16, 2021
24f5779
Add links to French versions of ebooks to README
Overv May 16, 2021
b2a4682
Update 00_Images.md
nicolas92g May 29, 2021
154dcd1
Merge pull request #239 from nicolas92g/patch-3
Overv May 30, 2021
6a1e494
Initialize debugCreateInfo everywhere
charles-lunarg Jun 12, 2021
2804836
Merge pull request #242 from charles-lunarg/master
Overv Jun 13, 2021
cd5452b
Replace min/max combination with clamp (resolves #240)
Overv Jun 13, 2021
54b0eda
Properly remove GL_ARB_separate_shader_objects references (fixes #112)
Overv Jun 15, 2021
2c92cc0
Use native language name in "languages" option.
chirsz-ever Jul 11, 2021
935147a
Merge pull request #246 from chirsz-ever/fix-210711
Overv Jul 19, 2021
e8ab01a
Add extra braces when setting VkClearValue
TestingPlant Jul 20, 2021
4b36689
Merge pull request #247 from TestingPlant/master
Overv Jul 24, 2021
6baf7fb
Apple M1 Added
rithulkamesh Aug 15, 2021
9f90e93
Update 00_Introduction.md
rithulkamesh Aug 23, 2021
401962b
Update 00_Introduction.md
rithulkamesh Aug 23, 2021
7f486be
Merge pull request #248 from rithulkamesh/patch-1
Overv Aug 23, 2021
cac1e92
Code samples: add CMakeLists.txt
kovrov Aug 18, 2021
73cca6f
Remove reference to nonexistent validation layer warning (fixes #250)
Overv Sep 19, 2021
e19f354
Fix typo
Overv Sep 19, 2021
5f0a745
Merge pull request #249 from kovrov/cmake
Overv Sep 19, 2021
ebeac99
Update link to Ray Tracing book
catleeball Nov 7, 2021
109d5d9
Merge pull request #253 from catleeball/patch-1
Overv Nov 8, 2021
a800a0a
Update 04_Swap_chain_recreation.md
Talon1024 Nov 14, 2021
7eae20d
Merge pull request #254 from Talon1024/patch-1
Overv Nov 15, 2021
949560e
Mention std::clamp in explanatory comment instead of min/max
Dec 17, 2021
4013f80
Merge pull request #256 from ralphtheninja/std-clamp
Overv Dec 20, 2021
730f8bf
Fix minor typo in french translation
ZaOniRinku Dec 28, 2021
e80dd8f
Merge pull request #258 from ZaOniRinku/master
Overv Dec 28, 2021
88b50d1
Add full name for vkBindXMemory functions
ZaOniRinku Dec 29, 2021
efe81be
Merge pull request #259 from ZaOniRinku/master
Overv Dec 29, 2021
30ca7a4
Fixed getMaxUsableSampleCount() formatting
thesusian Jan 15, 2022
43c0379
Chnage createFrameBuffers to createFramebuffers
thesusian Jan 15, 2022
8c71f7b
Merge pull request #262 from thesusian/patch-2
Overv Jan 18, 2022
a076519
Merge pull request #261 from thesusian/patch-1
Overv Jan 18, 2022
57ddc52
Updated links in the sidebar
SaschaWillems Jan 22, 2022
a93cb9f
Updated links to chunked Vulkan 1.2 spec
SaschaWillems Jan 22, 2022
ee8ac8a
Add Arch Linux support
Rubo3 Jan 31, 2022
f87df8e
Merge pull request #264 from Rubo3/patch-1
Overv Feb 5, 2022
8d863fd
Changed links according to QA
SaschaWillems Feb 6, 2022
bba0bc0
Updating 1.2 to 1.3 spec links
SaschaWillems Feb 6, 2022
cd67237
Merge pull request #263 from SaschaWillems/update-links
Overv Feb 6, 2022
eaa9f7d
Edit tutorial to reset & record command buffers each frame (#255)
charles-lunarg Feb 21, 2022
fefcaaa
Use std::numeric_limits<uint32_t>::max()
thp Feb 12, 2022
d7f26ca
Use std::numeric_limits<uint32_t>::max()
Overv Feb 21, 2022
608b986
vkDestroyDescriptorPool added to Descriptor pool and sets (#273)
Onyrew Mar 1, 2022
5282357
Describe how to install libxxf86vm and libxi (fixes #275)
Overv Mar 8, 2022
17dec07
Don't hardcode dynamicState count in code example
Overv Mar 8, 2022
ea275f6
Fix code snippet that was not updated as part of #255
Overv Mar 8, 2022
4ac2bd3
Add notice to French translation about updates to English version
Overv Mar 8, 2022
a007725
Add a note about the rear side of the model (fixes #277)
Overv Mar 29, 2022
0ff6aca
Update PDFs (fixes #279)
Overv Apr 10, 2022
c01b1b9
Redundant word removed (#282)
Apr 19, 2022
dce8e86
Fix typo (fixes #283)
Overv Apr 25, 2022
5a90bda
Remove outdated reference to swapchain (#285)
rHermes May 2, 2022
d46855c
Fix syntax error & inconsistency in sample code
Overv May 7, 2022
6519906
Fix small problem in "Depth buffering" (#289)
rHermes May 16, 2022
29ab167
Fix parts of the tutorial that weren't update to match the code (fixe…
Overv May 16, 2022
cbf32cc
Fix inconsistency between tutorial and code
Overv May 21, 2022
f5fcfbc
Fix vertex buffer/shader mixup
Overv Jun 27, 2022
8780354
Update tutorial to use dynamic state for viewport and scissor (#293)
SaschaWillems Jul 3, 2022
dcfd879
Fix spelling error
Overv Jul 13, 2022
e6996cb
Append new section in Instance create chapter
RuiwenTang Aug 1, 2022
2f5a425
Fix missing '{' (#299)
Jason2013 Aug 5, 2022
99659db
Add link to Go port of the code (fixes #298)
Overv Aug 7, 2022
8763f10
Update 07_Depth_buffering.md (#297)
sorvon Aug 7, 2022
1e6de08
Move explanation to FAQ page and reword
Overv Aug 7, 2022
1256617
Merge branch 'RuiwenTang-dev'
Overv Aug 7, 2022
75ef306
Change Fedora packages' names (#302)
magalilemes Aug 15, 2022
8e5340f
for Chinese version
huzhenbang Oct 4, 2022
e4d09e6
ch
huzhenbang Oct 5, 2022
34dee83
中文版
huzhenbang Oct 9, 2022
41a2a9b
Chinese Version
huzhenbang Oct 9, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
ch
  • Loading branch information
huzhenbang committed Oct 5, 2022
commit e4d09e637f06e02d454042546493e70cd80ee3df
61 changes: 61 additions & 0 deletions ch/00_介绍.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
## 关于

本教程将教您使用 [Vulkan](https://www.khronos.org/vulkan/) 图形和计算 API 的基础知识。 Vulkan 是 [Khronos group](https://www.khronos.org/) 小组(以 [OpenGL](https://en.wikipedia.org/wiki/OpenGL) 闻名)的一个新 API,
它提供了更好的现代显卡抽象应用接口。与 [OpenGL](https://en.wikipedia.org/wiki/OpenGL) 和 [Direct3D](https://en.wikipedia.org/wiki/Direct3D) 等现有图形 API 相比,这个新接口允许您更好地描述您的应用程序打算做什么,这可以带来更好的性能和更少令人惊讶的驱动程序行为。优势,允许您同时为 Windows、Linux 和 Android 进行开发。
Vulkan 背后的想法与 [Direct3D 12](https://en.wikipedia.org/wiki/Direct3D#Direct3D_12) 和 [Metal](https://en.wikipedia.org/wiki/Metal_(API)) 的想法相似,但 Vulkan 具有完全跨平台的优势,允许您同时为 Windows、Linux 和 Android 进行开发。



但是,您为这些好处付出的代价是您必须使用更加冗长的 API。 与图形 API 相关的每个细节都需要由您的应用程序从头开始设置,包括初始帧缓冲区创建和缓冲区和纹理图像等对象的内存管理(正文部分将对这些概念详细展开)。 图形驱动程序将减少很多手持操作,这意味着您必须在应用程序中做更多的工作以确保正确的行为。

Vulkan的特性并不适合所有人。 它针对的是对高性能计算机图形充满热情并愿意投入一些工作的程序员。如果您对游戏开发而不是计算机图形更感兴趣,那么您可能希望坚持使用 OpenGL (基于软件逻辑状态机设计的图像渲染接口,支持windows、linux、max、android,接口较为简单) 或 Direct3D (windows下图像渲染接口),这些技术不会很快被 Vulkan 弃用。 另一种选择是使用像 [Unreal Engine](https://en.wikipedia.org/wiki/Unreal_Engine#Unreal_Engine_4)这样的引擎,它们将能使用 Vulkan,同时向您提供更高级别的 API。

为减少学习障碍,让我们介绍一些学习本教程的先决条件:

* 一张计算机显卡以及支持Vulkan接口的显卡驱动程序 ([NVIDIA](https://developer.nvidia.com/vulkan-driver), [AMD](http://www.amd.com/en-us/innovations/software-technologies/technologies-gaming/vulkan), [Intel](https://software.intel.com/en-us/blogs/2016/03/14/new-intel-vulkan-beta-1540204404-graphics-driver-for-windows-78110-1540), [Apple Silicon (Or the Apple M1)](https://www.phoronix.com/scan.php?page=news_item&px=Apple-Silicon-Vulkan-MoltenVK))
* C++基础知识 (熟悉资源获取即初始化,初始化列表)
* 支持c++17特性的编译器 (Visual Studio 2017+, GCC 7+, 或 Clang 5+)
* 一些3D计算机图形学基础知识

本教程不要求您了解 OpenGL 或 Direct3D 概念,但要求您了解 3D 计算机图形学的基础知识。 例如,它不会解释透视投影背后的数学。 有关计算机图形学概念的精彩介绍,请参阅[相关在线书籍](https://paroj.github.io/gltut/)。 其他一些很棒的计算机图形资源教程是:
* [一周学会光线追踪](https://github.com/RayTracing/raytracing.github.io)
* [基于物理的真实环境渲染](http://www.pbr-book.org/)
* 基于Vulkan引擎的[雷神之锤](https://github.com/Novum/vkQuake)与[毁灭公爵3](https://github.com/DustinHLand/vkDOOM3)的开源游戏项目。

如果您愿意,您可以使用 C 而不是 C++,但您必须使用不同的线性代数库,并且您将在代码结构方面靠自己。我们将使用类和 RAII 等 C++ 特性来组织逻辑和资源生命周期。本教程还有一个可供 Rust 开发人员使用的[替代版本](https://github.com/bwasty/vulkan-tutorial-rs)。

为了让使用其他编程语言的开发人员更容易理解,并获得一些使用基本 API 的经验,我们将使用原始 C API 来使用 Vulkan。 但是,如果您使用 C++,您可能更喜欢使用较新的 [Vulkan-Hpp 封装](https://github.com/KhronosGroup/Vulkan-Hpp),这些绑定抽象了一些冗余的工作并有助于防止某些类别的错误。

## 电子书

如果您更喜欢以电子书的形式阅读本教程,则可以在此处下载 EPUB 或 PDF 版本:

* [EPUB](https://raw.githubusercontent.com/Overv/VulkanTutorial/master/ebook/Vulkan%20Tutorial%20ch.epub)
* [PDF](https://raw.githubusercontent.com/Overv/VulkanTutorial/master/ebook/Vulkan%20Tutorial%20ch.pdf)

## 教程概述

我们将通过一个实例概述 Vulkan 的工作原理。实例很简单,在屏幕画一个三角形。 在您了解了它们在整个绘画中的基本作用之后,所有较小步骤的目的将更有意义。 接下来,我们将使用 [Vulkan SDK](https://lunarg.com/vulkan-sdk/)、[GLM 库](http://glm.g-truc.net/) 设置开发环境用于线性代数运算,[GLFW](http://www.glfw.org/) 用于创建窗口。 本教程将介绍如何在 Windows 上使用 Visual Studio 和在 Ubuntu Linux 上使用 GCC 进行项目配置。

之后,我们将实现 Vulkan 程序的所有基本组件来渲染第一个三角形。 每一章将大致遵循
以下结构:
* 介绍一个新概念及其目的
* 使用相关概念的 API 调用将其集成到您的程序中
* 将抽象的组织逻辑用函数封装

尽管每一章都是作为前一章的后续内容编写的,但也可以将这些章节作为介绍某个 Vulkan 功能的独立文章阅读。 这意味着该站点也可用作参考。 所有 Vulkan 函数和类型都与规范相关联,因此您可以单击它们以了解更多信息。 Vulkan 是一个非常新的 API,因此规范本身可能存在一些不足之处。 我们鼓励您提交反馈到[Khronos组织](https://github.com/KhronosGroup/Vulkan-Docs)。

如前所述,Vulkan API 有一个相当冗长的 API,其中包含许多参数,可让您最大限度地控制图形硬件。 这会导致诸如创建纹理之类的基本操作需要执行很多步骤,而这些步骤每次都必须重复。因此,我们将在整个教程中创建自己的简化函数集合。

每章的结尾都将附有一个指向该点之前的完整代码列表的链接。如果您对代码的结构有任何疑问,或者您正在处理一个错误并想要进行比较,您可以参考它。所有代码文件都已在多家供应商的显卡上进行了测试,以验证其正确性。每章末尾还有一个评论部分,您可以在其中提出与特定主题相关的任何问题。请反馈您的平台、驱动程序版本、源代码、预期状态和实际状态以
便我们能帮助到你。

本教程旨在为开源社区做出贡献。 Vulkan 仍然是一个非常新的 API,还没有真正建立最佳实践。 如果您对教程和网站本身有任何类型的反馈,请不要犹豫,向 [GitHub 存储库](https://github.com/Overv/VulkanTutorial) 提交问题或拉取请求。您可以 * 观看 * 存储库以收到教程更新的通知。

在你完成了绘制你的第一个基于Vulkan的屏幕三角形,我们将开始扩展程序内容,包括线性变换、纹理和 3D 模型。

如果您以前使用过图形 API,那么您应该知道在第一个几何图形出现在屏幕上之前可能需要执行很多步骤。 Vulkan 中有许多这样的初始步骤,但您会发现每个单独的步骤都很容易理解并且不会觉得多余。 同样重要的是要记住,一旦你有了那个看起来很无聊的三角形,绘制带有完整纹理的 3D 模型并不需要额外的工作,其中的每一步都更具有意义。

如果您在学习本教程时遇到任何问题,请先查看常见问题解答,看看您的问题及其解决方案是否已在此处列出。 如果您在那之后仍然卡住,请随时在最接近的相关章节的评论部分寻求帮助。

准备好深入了解高性能图形 API 的未来了吗?[开始吧!](!ch/Overview)
Loading