You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- Update multiple Vulkan tutorial sections and examples with improvements and fixes
- Add frame time-based rotation to `36_multiple_objects.cpp` for consistent object rotation speed.
- Enhance Vulkan Configurator documentation for clarity and consistency.
- Convert `README.md` to AsciiDoc (`README.adoc`) with improved structure and detailed instructions.
- Include reference links for Khronos formats (glTF, KTX2) and improve descriptions.
- Refine shared and per-object resource explanations in the multiple objects guide.
This Android project allows you to run different chapters of the Vulkan Tutorial on Android devices.
4
4
5
-
##Selecting a Chapter
5
+
==Selecting a Chapter
6
6
7
7
By default, the project builds and runs the `34_android` chapter. You can select a different chapter by setting the `chapter` property in your Gradle build.
8
8
9
-
###Available Chapters
9
+
=== Available Chapters
10
10
11
-
-`34_android`: The Android chapter that uses tinyobjloader to load OBJ models
12
-
-`35_gltf_ktx`: The glTF and KTX chapter that uses tinygltf to load glTF models and KTX to load KTX2 textures
11
+
* `34_android`: The Android chapter that uses tinyobjloader to load OBJ models
12
+
* `35_gltf_ktx`: The glTF and KTX chapter that uses tinygltf to load glTF models and KTX to load KTX2 textures
13
13
14
-
###How to Select a Chapter
14
+
=== How to Select a Chapter
15
15
16
-
####From the Command Line
16
+
==== From the Command Line
17
17
18
-
```bash
18
+
[source,bash]
19
+
----
19
20
./gradlew assembleDebug -Pchapter=35_gltf_ktx
20
-
```
21
+
----
21
22
22
-
####From Android Studio
23
+
==== From Android Studio
23
24
24
25
1. Edit the `gradle.properties` file in the project root directory
25
26
2. Add the following line:
26
-
```
27
-
chapter=35_gltf_ktx
28
-
```
27
+
+
28
+
[source]
29
+
----
30
+
chapter=35_gltf_ktx
31
+
----
29
32
3. Sync the project and build
30
33
31
-
##Adding New Chapters
34
+
== Adding New Chapters
32
35
33
36
To add support for a new chapter:
34
37
@@ -38,7 +41,8 @@ To add support for a new chapter:
38
41
39
42
For example, to add support for a hypothetical `36_new_feature` chapter:
Copy file name to clipboardExpand all lines: en/12_Ecosystem_Utilities_and_Compatibility.adoc
+14-10Lines changed: 14 additions & 10 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -63,11 +63,15 @@ If you're considering using a specific extension:
63
63
64
64
This helps you decide whether to require the extension or provide a fallback path.
65
65
66
-
==== Example: Using the vulkanconfig Tool
66
+
==== Example: Using the Vulkan Configurator Tool
67
67
68
-
The `vulkanconfig` tool is included in the Vulkan SDK and provides a convenient way to configure Vulkan settings on your system. Here's how to use it:
68
+
The Vulkan Configurator tool (executable name `vkconfig` on all platforms) is included in the Vulkan SDK and provides a convenient way to configure Vulkan settings on your system. Here's how to use it:
69
69
70
-
1. *Launch vulkanconfig*: Open a terminal or command prompt and run `vulkanconfig`
70
+
1. *Launch the Vulkan Configurator*:
71
+
- On Windows: It's recommended to start "Vulkan Configurator" from the Start menu, as running `vkconfig.exe` from the command line only shows limited options
72
+
- On other platforms: Open a terminal and run `vkconfig`
73
+
74
+
Note that the executable is called `vkconfig` on all platforms.
71
75
72
76
2. *Configure Validation Layers*:
73
77
- Navigate to the "Layers" tab
@@ -87,12 +91,12 @@ The `vulkanconfig` tool is included in the Vulkan SDK and provides a convenient
87
91
- Save your configuration for later use or to share with team members
88
92
- This ensures consistent Vulkan environments across development machines
89
93
90
-
Using `vulkanconfig` is particularly helpful when:
94
+
Using the Vulkan Configurator is particularly helpful when:
91
95
- Debugging Vulkan applications with different validation layer configurations
92
96
- Testing your application with different Vulkan settings without modifying code
93
97
- Setting up a development environment with specific Vulkan requirements
94
98
95
-
==== Using vulkanconfig for Validation Layers Instead of Code
99
+
==== Using Vulkan Configurator for Validation Layers Instead of Code
96
100
97
101
In many Vulkan applications, validation layers are enabled programmatically during instance creation, typically only in debug builds. Here's how this is commonly done:
98
102
@@ -142,7 +146,7 @@ While this approach works, it has several drawbacks:
142
146
2. It's harder to experiment with different validation layer configurations
143
147
3. It adds complexity to your codebase
144
148
145
-
A better approach is to use `vulkanconfig` to manage validation layers externally. Here's how to modify your code to take advantage of this:
149
+
A better approach is to use the Vulkan Configurator to manage validation layers externally. Here's how to modify your code to take advantage of this:
146
150
147
151
[,c++]
148
152
----
@@ -162,12 +166,12 @@ void createInstance() {
162
166
With this approach:
163
167
164
168
1. You remove all validation layer-specific code from your application
165
-
2. You use `vulkanconfig` to enable validation layers when needed
169
+
2. You use the Vulkan Configurator to enable validation layers when needed
166
170
3. You can switch validation configurations without recompiling
167
171
168
-
To enable validation layers with `vulkanconfig`:
172
+
To enable validation layers with the Vulkan Configurator:
169
173
170
-
1. Launch `vulkanconfig`
174
+
1. Launch the Vulkan Configurator (from the Start menu on Windows, or run `vkconfig` from the terminal - the executable is called `vkconfig` on all platforms)
171
175
2. Go to the "Layers" tab
172
176
3. Enable the `VK_LAYER_KHRONOS_validation` layer
173
177
4. Apply the settings
@@ -187,7 +191,7 @@ Besides GPUInfo.org, several other tools can help you develop and debug Vulkan a
187
191
188
192
* *Vulkan SDK Tools*:
189
193
** `vulkaninfo`: Displays Vulkan capabilities of your local system
190
-
** `vulkanconfig`: A configuration tool for managing Vulkan settings (see <<Example: Using the vulkanconfig Tool>> for details)
194
+
** `vkconfig` (Vulkan Configurator): A configuration tool for managing Vulkan settings (see <<Example: Using the Vulkan Configurator Tool>> for details)
191
195
** Validation layers: Help identify API usage errors
Copy file name to clipboardExpand all lines: en/15_GLTF_KTX2_Migration.adoc
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -23,7 +23,7 @@ Let's dive into the migration process and see how to adapt our Vulkan applicatio
23
23
24
24
=== What is glTF?
25
25
26
-
glTF (GL Transmission Format) is a royalty-free specification for the efficient transmission and loading of 3D scenes and models. Developed by the Khronos Group, glTF is designed to be a "JPEG for 3D" - a common publishing format for 3D content.
26
+
https://www.khronos.org/gltf/[glTF] (GL Transmission Format) is a royalty-free specification for the efficient transmission and loading of 3D scenes and models. Developed by the Khronos Group, glTF is designed to be a "JPEG for 3D" - a common publishing format for 3D content.
27
27
28
28
Key features of glTF include:
29
29
@@ -70,7 +70,7 @@ Let's compare the OBJ format with glTF:
70
70
71
71
=== What is KTX2?
72
72
73
-
KTX2 (Khronos Texture 2.0) is a container file format for storing texture data optimized for GPU usage. It's designed to work efficiently with modern graphics APIs like Vulkan, OpenGL, and DirectX.
73
+
https://www.khronos.org/ktx/[KTX2] (Khronos Texture 2.0) is a container file format for storing texture data optimized for GPU usage. It's designed to work efficiently with modern graphics APIs like Vulkan, OpenGL, and DirectX.
* Descriptor sets that reference those uniform buffers
@@ -306,14 +308,16 @@ When rendering multiple objects, keep these performance considerations in mind:
306
308
== Conclusion
307
309
308
310
You've now learned how to render multiple objects in Vulkan by:
311
+
309
312
1. Creating a structure to hold per-object data
310
-
2. Duplicating the necessary resources (uniform buffers, descriptor sets) for each object
313
+
2. Duplicating the necessary resources with (uniform buffers, descriptor sets) for each object
311
314
3. Sharing resources that can be reused (vertex/index buffers, pipeline, textures)
312
315
4. Updating the rendering loop to draw each object with its own transformation
313
316
314
317
This approach gives you the flexibility to position, rotate, and scale objects independently while maintaining good performance by sharing resources where appropriate.
315
318
316
319
In a real-world application, you might extend this system with:
320
+
317
321
* Object hierarchies (parent-child relationships)
318
322
* Different meshes and materials for different objects
319
323
* Frustum culling to avoid rendering objects outside the camera view
0 commit comments