- 博客(18)
- 资源 (9)
- 收藏
- 关注
翻译 vulakn教程--Drawing a Triangle--Draw--Render and presentation
原文地址 : vulkan-tutorialRendering and presentation接下来我们将使用drawFrame() 函数将三角形显示到屏幕上。 drawFrame()要做如下几件事:从Swap Chain 请求一个image。执行带有这个image的command buffer ,这个image曾被当做attachment存储在framebuffer中(Execute t
2016-09-21 23:11:29 1798 1
原创 函数指针
和其他简单变量一样,编译阶段会给函数代码块分配一块内存,内存的首地址其实就是函数的名字,通常也称作指向函数的指针,即函数指针。如下 :int max(int a,int b){ int result = a > b ? a : b; cout<<result<<endl;}这个函数返回a , b两数的最大者,我们可以为定义一个指向这个函数的指针fun:int (*fun)
2016-09-20 23:58:29 348
翻译 vulakn教程--Drawing a Triangle--Draw--CommandBuffer
原文地址 : vulkan-tutorialCommand buffers在Vulkan中,像绘画命令、内存转换等操作并不是直接通过方法调用去完成的,而是需要把所有的操作放在Command Buffer 里。这样的一个好处就是:那些已设置好的具有难度的绘图工作都可以在多线程的情况下提前完成。Command poolsCommand pools 管理Command buffer 的内存而且Comma
2016-09-20 20:53:46 1505
翻译 vulakn教程--Drawing a Triangle--Draw--Framebuffer
原文地址 : vulkan-tutorialFramebuffers我们已在之前的章节中多次提到FrameBuffer 并且在创建Render Pass时,我们期望拥有一个和Swap Chain 里image具有相同格式(format)的FrameBuffer。 接下来我们就将创建这种FrameBufefr. 我们将attachments包裹在FrameBuffer中,FrameBuffer 通
2016-09-19 20:49:20 887
翻译 vulakn教程--Drawing a Triangle--Pipeline--Render passes
原文链接 : vulkan-tutorialRender Pass在创建Pipeline 之前我们必须告诉Vulkan在渲染时要使用的FrameBuffer 附件(attachments),需要定义使用color buffer 以及 depth buffer attachments的数量,要使用多少个采样(samples)以及应该如何处理采样的内容。所有这些信息都可以填写在Render Pass里
2016-09-15 21:29:40 1013
翻译 vulakn教程--Drawing a Triangle--Pipeline--Fixed function
原文地址 : vulkan-tutorial Fixed functions这一章节的内容大部分设计Pipeline中不可编程部分的配置。Vertex inputVkPipelineVertexInputStateCreateInfo 代表我们传递给Vertex Shader 顶点数据的格式,它涉及以下两个方面:顶点数据的描述(Bindings) :数据间的间
2016-09-14 21:17:48 1655
翻译 vulakn教程--Drawing a Triangle--Pipeline--Shader Module
原文地址 : vulkan-tutorial着色器模块 Shader modulesVulkan 和之前的图形API有所不同,为了避免不同厂商移植代码的复杂性,Vulkan的着色器代码(shader code)采用字节码格式(bytecode) SPIR-V,而非人类可以阅读的文本格式,如GLSL(opengl 的一套体系)等。但这并不意味着我们要亲自手写字节码, 幸运的是LunarG SDK 已
2016-09-12 21:47:15 1334
翻译 vulakn教程--Drawing a Triangle--Pipeline--Introduction
原文链接: vulkan-tutorialPipeline前言(Introduction)Pipeline 是指图形系统对图像信息进行一系列处理的过程,这些图像信息包括顶点信息(坐标、法向量…),像素信息(图像、纹理…)等,最终这些处理好的数据将被放到帧缓冲区(FrameBuffer)中供应用获取。 图1-Pipeline过程a.输入装配器(Input assembler) : 从Vertex
2016-09-10 22:25:45 825
翻译 vulakn教程--Drawing a Triangle--Presentation-- Image views
原文地址: vulkan-tutorialImage views为了使用VkImage,不管是在Swap Chain 还是在Pipeline 中,我们都必须创建VkImageView,就如同它的字面意思一样,imageView是image的一个 view.他描述了我们如何访问image、访问image的哪一部分等。这一部分我们将创建VkImageViews , 并把它用作 color targe
2016-09-09 20:52:02 743
翻译 vulakn教程--Drawing a Triangle--Presentation--SwapChain
原文链接: Vulakn-tutorialSwapChain这一章节我们将学习这样一种结构/基础(infrastructure),它能为我们提供要渲染的图片,然后渲染结的果可以显到屏幕上。这样的结构就是Swap Chain , Swap Chain必须被Vulkan显示的创建。从本质上讲,Swap Chain就是一个图片的队列(a queue of images),这里的图片等着被
2016-09-08 19:49:19 2214
翻译 vulakn教程--Drawing a Triangle--Presentation--Window surface
原文链接: Vulkan-tutorialWindow surface因为Vulkan是平台(platform)无关的,它不能直接与平台窗体系统(window system)进行通信,为了连接Vulkan和窗体系统,使得被渲染后的结果显示到屏幕上,我们需要使用WSI扩展(Window System Integration extensions),在这个章节我们将使用VK_KHR_surface,它提
2016-09-06 21:45:50 1310
翻译 vulakn教程--Drawing a Triangle--Set up--Logical Device
原文链接 : Vulakn-tutorialLogical Device只有Physical Device 还不行,我们还需要创建Logical Device 来与它相联。Physical Device的创建和VkInstance的创建过程差不多,需要明确我们所需的特性(features)、extensions、Validation layers 、queue等。声明 :VDeleter<VkDev
2016-09-05 22:53:55 895
翻译 vulakn教程--Drawing a Triangle--Set up--Physical Device and Queue Family
原文链接:Vulkan-tutorialPhysical Device and Queue好了,我们已经用VkINstance初始化了Vulkan API,是时候选择一个具有我们需要的特性的显卡了(graphics card),事实上,我们可以同时使用多个显卡,为了简单起见,我们只选择第一个满足我们要求的显卡。VkPhysicalDevice physicalDevice=
2016-09-04 19:09:05 1369
翻译 vulakn教程--Drawing a Triangle--Set up--Validation layers
原文链接:Vulkan-tutorialValidation layers 验证层为什么要用Validation layers ? Vulkan的设计理念是:使驱动(driver)的负担最小化。一个明显的表现就是它有限的错误检测,像设置错误的枚举值或者将必须的函数参数传递为空指针(NULL)这类简单的操作都没有明确的处理,Vulkan只是简单的Crash或者产生一些未定义的行为(undefined
2016-09-04 10:04:43 1693
翻译 vulakn教程--Drawing a Triangle--Set up--Instance
InstanceCreating an instance在 initVulkan 里添加函数createInstance :void initVulkan() { createInstance();}声明变量:private:VDeleter<VkInstance> instance {vkDestroyInstance};然后需要填充两个结构体: VkApplicationInfo和
2016-09-03 11:57:41 1094 1
翻译 vulakn教程--Drawing a Triangle--Set up--Base code
Base codeGeneral structure上一章通过构建一个窗体来完成VS对Vulkan的配置,并将配置好的工程设置为模板以备后续的使用。在上一章的最后我们用这个模板创建了一个名为:Hello Triangle 的新工程,现在让我们为这个工程搭建一个框架。#include <iostream>#include <stdexcept>#include <functional>class
2016-09-03 11:02:34 1123
翻译 vulkan 教程--Development environmen
原文链接 : vulkan-tutorial 。本打算直接在Android上学习Vulkan,但奈何Android 上的资料实在是太少,也可能我的网被墙了没找到。目前找到了一些sample code:GitHub ,也没什么教程,所以就打算先在PC上搞一阵子,毕竟PC上有这篇教程,熟悉之后再转到Android。因为公司工作机上是Windows 7系统,所以这里重点强调Vulkan
2016-09-02 12:58:54 2173
翻译 Vulkan 教程--Overview
原文地址 Vulkan-tutorial 。Origin of Vulkan和其他图形API一样,Vulkan也被设计成跨平台。但是以前的这些图形API在设计时和当时的显卡关系密切,只是提供了一些可配置的固定功能。编程人员不得不在显卡厂商的怜悯之下,使用所谓标准格式的顶点数据来勉强进行光照( lighting )和着色( shading )操作。随着
2016-09-01 15:44:23 2418 2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人