售 价:¥
温馨提示:数字商品不支持退换货,不提供源文件,不支持导出打印
为你推荐
Title Page
Copyright
Credits
About the Author
Acknowledgments
About the Reviewer
www.PacktPub.com
Customer Feedback
Preface
What this book covers
What you need for this book
Who this book is for
Sections
Getting ready
How to do it…
How it works…
There's more…
See also
Conventions
Reader feedback
Customer support
Downloading the example code
Downloading the color images of this book
Errata
Piracy
Questions
Instance and Devices
Introduction
Downloading Vulkan's SDK
Getting ready
How to do it...
How it works...
See also
Enabling validation layers
How to do it...
How it works...
See also
Connecting with a Vulkan Loader library
How to do it...
How it works...
See also
Preparing for loading Vulkan API functions
How to do it...
How it works...
See also
Loading functions exported from a Vulkan Loader library
How to do it...
How it works...
See also
Loading global-level functions
How to do it...
How it works...
See also
Checking available Instance extensions
How to do it...
How it works...
See also
Creating a Vulkan Instance
How to do it...
How it works...
See also
Loading instance-level functions
How to do it...
How it works...
See also
Enumerating available physical devices
How to do it...
How it works...
See also
Checking available device extensions
How to do it...
How it works...
See also
Getting features and properties of a physical device
How to do it...
How it works...
See also
Checking available queue families and their properties
How to do it...
How it works...
See also
Selecting the index of a queue family with the desired capabilities
How to do it...
How it works...
See also
Creating a logical device
Getting ready
How to do it...
How it works...
See also
Loading device-level functions
How to do it...
How it works...
See also
Getting a device queue
How to do it...
How it works...
See also
Creating a logical device with geometry shaders, graphics, and compute queues
How to do it...
How it works...
See also
Destroying a logical device
How to do it...
How it works...
See also
Destroying a Vulkan Instance
How to do it...
How it works...
See also
Releasing a Vulkan Loader library
How to do it...
How it works...
See also
Image Presentation
Introduction
Creating a Vulkan Instance with WSI extensions enabled
How to do it...
How it works...
See also
Creating a presentation surface
Getting ready
How to do it...
How it works...
See also
Selecting a queue family that supports presentation to a given surface
How to do it...
How it works...
See also
Creating a logical device with WSI extensions enabled
How to do it...
How it works...
See also
Selecting a desired presentation mode
How to do it...
How it works...
See also
Getting the capabilities of a presentation surface
How to do it...
How it works...
See also
Selecting a number of swapchain images
How to do it...
How it works...
See also
Choosing a size of swapchain images
How to do it...
How it works...
See also
Selecting desired usage scenarios of swapchain images
How to do it...
How it works...
See also
Selecting a transformation of swapchain images
How to do it...
How it works...
See also
Selecting a format of swapchain images
Getting ready
How to do it...
How it works...
See also
Creating a swapchain
How to do it...
How it works...
See also
Getting handles of swapchain images
How to do it...
How it works...
See also
Creating a swapchain with R8G8B8A8 format and a mailbox present mode
How to do it...
How it works...
See also
Acquiring a swapchain image
Getting ready
How to do it...
How it works...
See also
Presenting an image
Getting ready
How to do it...
How it works...
See also
Destroying a swapchain
How to do it...
How it works...
See also
Destroying a presentation surface
How to do it...
How it works...
See also
Command Buffers and Synchronization
Introduction
Creating a command pool
How to do it...
How it works...
See also
Allocating command buffers
How to do it...
How it works...
See also
Beginning a command buffer recording operation
How to do it...
How it works...
See also
Ending a command buffer recording operation
How to do it...
How it works...
See also
Resetting a command buffer
How to do it...
How it works...
See also
Resetting a command pool
How to do it...
How it works...
See also
Creating a semaphore
How to do it...
How it works...
See also
Creating a fence
How to do it...
How it works...
See also
Waiting for fences
How to do it...
How it works...
See also
Resetting fences
How to do it...
How it works...
See also
Submitting command buffers to a queue
Getting ready
How to do it...
How it works...
See also
Synchronizing two command buffers
Getting ready
How to do it...
How it works...
See also
Checking if processing of a submitted command buffer has finished
How to do it...
How it works...
See also
Waiting until all commands submitted to a queue are finished
How to do it...
How it works...
See also
Waiting for all submitted commands to be finished
How to do it...
How it works...
See also
Destroying a fence
How to do it...
How it works...
See also
Destroying a semaphore
How to do it...
How it works...
See also
Freeing command buffers
How to do it...
How it works...
See also
Destroying a command pool
How to do it...
How it works...
See also
Resources and Memory
Introduction
Creating a buffer
How to do it...
How it works...
See also
Allocating and binding a memory object for a buffer
How to do it...
How it works...
There's more...
See also
Setting a buffer memory barrier
Getting ready
How to do it...
How it works...
There's more...
See also
Creating a buffer view
How to do it...
How it works...
See also
Creating an image
How to do it...
How it works...
See also
Allocating and binding a memory object to an image
How to do it...
How it works...
There's more...
See also
Setting an image memory barrier
Getting ready
How to do it...
How it works...
See also
Creating an image view
How to do it...
How it works...
See also
Creating a 2D image and view
How to do it...
How it works...
See also
Creating a layered 2D image with a CUBEMAP view
How to do it...
How it works...
See also
Mapping, updating and unmapping host-visible memory
How to do it...
How it works...
See also
Copying data between buffers
How to do it...
How it works...
See also
Copying data from a buffer to an image
How to do it...
How it works...
See also
Copying data from an image to a buffer
How to do it...
How it works...
See also
Using a staging buffer to update a buffer with a device-local memory bound
How to do it...
How it works...
See also
Using a staging buffer to update an image with a device-local memory bound
How to do it...
How it works...
See also
Destroying an image view
How to do it...
How it works...
See also
Destroying an image
How to do it...
How it works...
See also
Destroying a buffer view
How to do it...
How it works...
See also
Freeing a memory object
How to do it...
How it works...
See also
Destroying a buffer
How to do it...
How it works...
See also
Descriptor Sets
Introduction
Creating a sampler
How to do it...
How it works...
See also
Creating a sampled image
How to do it...
How it works...
See also
Creating a combined image sampler
How to do it...
How it works...
See also
Creating a storage image
How to do it...
How it works...
See also
Creating a uniform texel buffer
How to do it...
How it works...
See also
Creating a storage texel buffer
How to do it...
How it works...
See also
Creating a uniform buffer
How to do it...
How it works...
See also
Creating a storage buffer
How to do it...
How it works...
See also
Creating an input attachment
How to do it...
How it works...
See also
Creating a descriptor set layout
How to do it...
How it works...
See also
Creating a descriptor pool
How to do it...
How it works...
See also
Allocating descriptor sets
How to do it...
How it works...
See also
Updating descriptor sets
Getting ready
How to do it...
How it works...
See also
Binding descriptor sets
How to do it...
How it works...
See also
Creating descriptors with a texture and a uniform buffer
How to do it...
How it works...
See also
Freeing descriptor sets
How to do it...
How it works...
See also
Resetting a descriptor pool
How to do it...
How it works...
See also
Destroying a descriptor pool
How to do it...
How it works...
See also
Destroying a descriptor set layout
How to do it...
How it works...
See also
Destroying a sampler
How to do it...
How it works...
See also
Render Passes and Framebuffers
Introduction
Specifying attachments descriptions
How to do it...
How it works...
See also
Specifying subpass descriptions
Getting ready
How to do it...
How it works...
See also
Specifying dependencies between subpasses
How to do it...
How it works...
See also
Creating a render pass
Getting ready
How to do it...
How it works...
See also
Creating a framebuffer
How to do it...
How it works...
See also
Preparing a render pass for geometry rendering and postprocess subpasses
Getting ready
How to do it...
How it works...
See also
Preparing a render pass and a framebuffer with color and depth attachments
Getting ready
How to do it...
How it works...
See also
Beginning a render pass
How to do it...
How it works...
See also
Progressing to the next subpass
How to do it...
How it works...
See also
Ending a render pass
How to do it...
How it works...
See also
Destroying a framebuffer
How to do it...
How it works...
See also
Destroying a render pass
How to do it...
How it works...
See also
Shaders
Introduction
Converting GLSL shaders to SPIR-V assemblies
How to do it...
How it works...
See also
Writing vertex shaders
How to do it...
How it works...
See also
Writing tessellation control shaders
How to do it...
How it works...
See also
Writing tessellation evaluation shaders
How to do it...
How it works...
See also
Writing geometry shaders
How to do it...
How it works...
See also
Writing fragment shaders
How to do it...
How it works...
See also
Writing compute shaders
How to do it...
How it works...
See also
Writing a vertex shader that multiplies vertex position by a projection matrix
How to do it...
How it works...
See also
Using push constants in shaders
How to do it...
How it works...
See also
Writing texturing vertex and fragment shaders
How to do it...
How it works...
See also
Displaying polygon normals with a geometry shader
How to do it...
How it works...
See also
Graphics and Compute Pipelines
Introduction
Creating a shader module
How to do it...
How it works...
See also
Specifying pipeline shader stages
Getting ready
How to do it...
How it works...
See also
Specifying a pipeline vertex binding description, attribute description, and input state
How to do it...
How it works...
See also
Specifying a pipeline input assembly state
How to do it...
How it works...
See also
Specifying a pipeline tessellation state
How to do it...
How it works...
See also
Specifying a pipeline viewport and scissor test state
Getting ready
How to do it...
How it works...
See also
Specifying a pipeline rasterization state
How to do it...
How it works...
See also
Specifying a pipeline multisample state
How to do it...
How it works...
See also
Specifying a pipeline depth and stencil state
How to do it...
How it works...
See also
Specifying a pipeline blend state
How to do it...
How it works...
See also
Specifying pipeline dynamic states
How to do it...
How it works...
See also
Creating a pipeline layout
How to do it...
How it works...
See also
Specifying graphics pipeline creation parameters
How to do it...
How it works...
See also
Creating a pipeline cache object
How to do it...
How it works...
See also
Retrieving data from a pipeline cache
How to do it...
How it works...
See also
Merging multiple pipeline cache objects
How to do it...
How it works...
See also
Creating a graphics pipeline
How to do it...
How it works...
See also
Creating a compute pipeline
How to do it...
How it works...
See also
Binding a pipeline object
How to do it...
How it works...
See also
Creating a pipeline layout with a combined image sampler, a buffer, and push constant ranges
How to do it...
How it works...
See also
Creating a graphics pipeline with vertex and fragment shaders, depth test enabled, and with dynamic viewport and scissor tests
How to do it...
How it works...
See also
Creating multiple graphics pipelines on multiple threads
Getting ready
How to do it...
How it works...
See also
Destroying a pipeline
How to do it...
How it works...
See also
Destroying a pipeline cache
How to do it...
How it works...
See also
Destroying a pipeline layout
How to do it...
How it works...
See also
Destroying a shader module
How to do it...
How it works...
See also
Command Recording and Drawing
Introduction
Clearing a color image
How to do it...
How it works...
See also
Clearing a depth-stencil image
How to do it...
How it works...
See also
Clearing render pass attachments
How to do it...
How it works...
See also
Binding vertex buffers
Getting ready
How to do it...
How it works...
See also
Binding an index buffer
How to do it...
How it works...
See also
Providing data to shaders through push constants
How to do it...
How it works...
See also
Setting viewport states dynamically
How to do it...
How it works...
See also
Setting scissor states dynamically
How to do it...
How it works...
See also
Setting line width states dynamically
How to do it...
How it works...
See also
Setting depth bias states dynamically
How to do it...
How it works...
See also
Setting blend constants states dynamically
How to do it...
How it works...
See also
Drawing a geometry
How to do it...
How it works...
See also
Drawing an indexed geometry
How to do it...
How it works...
See also
Dispatching compute work
How to do it...
How it works...
See also
Executing a secondary command buffer inside a primary command buffer
How to do it...
How it works...
See also
Recording a command buffer that draws a geometry with dynamic viewport and scissor states
Getting ready
How to do it...
How it works...
See also
Recording command buffers on multiple threads
Getting ready
How to do it...
How it works...
See also
Preparing a single frame of animation
How to do it...
How it works...
See also
Increasing the performance through increasing the number of separately rendered frames
Getting ready
How to do it...
How it works...
See also
Helper Recipes
Introduction
Preparing a translation matrix
How to do it...
How it works...
See also
Preparing a rotation matrix
How to do it...
How it works...
See also
Preparing a scaling matrix
How to do it...
How it works...
See also
Preparing a perspective projection matrix
How to do it...
How it works...
See also
Preparing an orthographic projection matrix
How to do it...
How it works...
See also
Loading texture data from a file
Getting ready
How to do it...
How it works...
See also
Loading a 3D model from an OBJ file
Getting ready
How to do it...
How it works...
See also
Lighting
Introduction
Rendering a geometry with a vertex diffuse lighting
Getting ready
How to do it...
How it works...
See also
Rendering a geometry with a fragment specular lighting
Getting ready
How to do it...
How it works...
See also
Rendering a normal mapped geometry
Getting ready
How to do it...
How it works...
See also
Drawing a reflective and refractive geometry using cubemaps
Getting ready
How to do it...
How it works...
See also
Adding shadows to the scene
Getting ready
How to do it...
How it works...
See also
Advanced Rendering Techniques
Introduction
Drawing a skybox
Getting ready
How to do it...
How it works...
See also
Drawing billboards using geometry shaders
How to do it...
How it works...
See also
Drawing particles using compute and graphics pipelines
How to do it...
How it works...
See also
Rendering a tessellated terrain
Getting ready
How to do it...
How it works...
See also
Rendering a full-screen quad for post-processing
How to do it...
How it works...
See also
Using input attachments for a color correction post-process effect
How to do it...
How it works...
See also
买过这本书的人还买过
读了这本书的人还在读
同类图书排行榜