0x00 写在前面

最近在学习由 Patricio 编写的 The Book of Shaders,这是一本关于 Fragment Shaders(片段着色器)的入门指南。为了在一个相对熟悉的平台运行着色器代码,最后决定使用 VS Code 来配置开发环境。配置好的 VS Code 支持语法检测及代码提示,同时还可以实时预览修改的结果。

本文简单记录下安装和配置的过程。

0x01 安装 VS Code 及相关插件

第一步:安装 VS Code

第二步:在 VS Code 中安装相关的插件

安装插件的步骤:

  1. 点击右侧的 Extensions 按钮 (或使用快捷键 ctrl/cmd + shift + x)
  2. 在搜索框中输入插件名
  3. 点击插件旁的 Install 安装
  4. 有的插件需要重启 VS Code,则点击插件旁的 Reload Required

按照安装插件的步骤依次安装插件:

  1. Shader languages support for VS Code
  2. glsl-canvas
  3. GLSL Lint

0x02 语法检测

GLSL Lint 插件还依赖 OpenGL and OpenGL ES shader validator,点击链接即可前往,选择对应的 Release 版本下载。将下载好的压缩文件解压后,配置到系统环境变量中。因为不同的系统配置系统环境变量的方式也有所不同,这里不赘述了。

配置好环境变量后,重新打开 VS Code,新建一个文件来测试一下语法检测是否生效。这里故意删掉了 main 函数的右括号,可以看到第 7 行有红色的下划线提示,鼠标悬停在红线上会显示具体的错误信息。

同时也可以打开 Problems 界面来查看所有报错信息 (打开方式:View → Problems 或使用快捷键 ctrl/cmd + shift + m)。

0x03 代码提示

代码提示通过 VS Code 自带的 Snippets 功能来完成,在 VS Code 中依次点击 File → Preferences → User Snippets,在弹出的框中输入 glsl,点击第一个结果。VS Code 会帮我们创建一个名为 glsl.json 的文件,在该文件中我们可以自定义一些 glsl 的代码片段。

这里不妨直接使用 Lewis Lepton 写好的 配置文件。如果前面的链接访问速度较慢,也可以下载我上传到博客园中备份: glsl.json.zip

下载完成后,将其中的内容复制粘贴到刚刚创建好的 glsl.json 中并保存,就可以愉快地开始敲代码了。

0x04 Hello World

最后运行一段简单的 glsl 代码来检查上面的配置是否正确吧。

#ifdef GL_ES
precision mediump float;
#endif uniform vec2 u_resolution; void main() {
vec2 st = gl_FragCoord.xy/u_resolution;
gl_FragColor = vec4(st.x,st.y,0.0,1.0);
}

使用快捷键 ctrl/cmd + shift + p,输入并选择 Show glslCanvas 按下回车,应该就可以在右侧看到展示结果了。

0x05 其他说明

The Book of Shaders 使用 WebGL 运行环境,与普通的 GLSL 略有差异。一些细节可以前往 GlslCanvas 的项目主页进行查看。

参考资料:

Book of Shaders 00 - 使用 VS Code 编写 GLSL的更多相关文章

  1. [6278009]使用Visual Stuido Code 编写Markdown

    使用Visual Stuido Code 编写Markdown void main() { printf("Hello world!"); } void main() { Cons ...

  2. 31 Godoc: documenting Go code 编写良好的文档关于godoc

    Godoc: documenting Go code  编写良好的文档关于godoc 31 March 2011 The Go project takes documentation seriousl ...

  3. 在ubuntu下使用visual studio code编写python

    感觉有了visual studio code之后,不管编写什么语言的代码都可以,简单安装对应的语言插件即可. 这不轮到了最近比较热的python语言,蹭着AI的热度,python语言成为了工程师们又一 ...

  4. 如何使用VS Code编写Spring Boot (第二弹)

    本篇文章是续<如何使用VS Code编写Spring Boot> 之后,结合自己.net经验捣鼓的小demo,一个简单的CRUD,对于习惯了VS操作模式的.net人员非常方便,强大的智能提 ...

  5. vs code编写java

    不知不觉中vs code变得非常强大了,今天小编就分享一下vs code编写java语言.其实除了java语言,还支持很多语言. 首先看下vs code欢迎页面支持哪些语言: 好家伙,支持的东西还真不 ...

  6. CSharpGL(11)用C#直接编写GLSL程序

    CSharpGL(11)用C#直接编写GLSL程序 +BIT祝威+悄悄在此留下版了个权的信息说: 2016-08-13 由于CSharpGL一直在更新,现在这个教程已经不适用最新的代码了.CSharp ...

  7. Rust初步(二):使用Visual Studio Code编写Rust程序(猜猜看游戏)

    我是照着下面这篇帮助文档,完成了第一个完整的Rust程序: 猜猜看 游戏 http://kaisery.gitbooks.io/rust-book-chinese/content/content/3. ...

  8. Visual Studio Code编写HTML

    第一步双击打开Visual Studio Code,我们发现什么也没有,但是有一个默认打开的编辑页面.我们先点击File->OpenFoldor 为什么先这么做呢,有两个原因,第一个原因假如你有 ...

  9. 使用Visual Studio Code编写和激活ABAP代码 (上)

    猪年春节后的第一篇,Jerry祝各位猪年大吉! 2019年的六分之一马上就快过完了,不知道大家在新的一年是否给自己定了新的小目标呢?这里Jerry先预祝大家到2019年年底的时候,在年初制定的小目标都 ...

随机推荐

  1. 据说这个是可以撸到2089年的idea2020.2

    声明:本教程 IntelliJ IDEA IDEA2020.2破解 激活方式均收集于网络,请勿商用,仅供个人学习使用,如有侵权,请联系作者删除 注意: 本教程适用于 JetBrains 全系列产品 I ...

  2. js获取N天后的日期

    这个javascript函数是获取当前时间前后N天日期的方法,可以得到昨天,今天,明天,一月前,三月前,半年前,一年前的日期,只要修改参数就可以实现得到任何一个天数.具体用法如下: function  ...

  3. Java 实例 - 三目条件运算符

    package guyu.day0903; /** * @Author: Fred * @Date: 2020/9/3 10:59 */ public class Demo01 { public st ...

  4. 深圳做假证h

    深圳做假证[电/薇:187ヘ1184ヘ0909同号]办各类证件-办毕业证-办离婚证,办学位证书,办硕士毕业证,办理文凭学历,办资格证,办房产证不. 这是一个简单的取最大值程序,可以用于处理 i32 数 ...

  5. Fitness - 05.19

    倒计时226天 运动45分钟,共计9组,4.7公里.拉伸10分钟. 每组跑步3分钟(6.5KM/h),走路2分钟(5.5KM/h). 上周的跑步计划中断了,本周重复第三阶段的跑步计划. 一共掉了10斤 ...

  6. 石子合并(区间dp典型例题)

    Description 有n堆石子排成一行,每次选择相邻的两堆石子,将其合并为一堆,记录该次合并的得分为两堆石子个数之和.已知每堆石子的石子个数,求当所有石子合并为一堆时,最小的总得分. Input ...

  7. 分布式ID生成方案汇总

    1.目标 1.1.全局唯一 不能出现重复的ID,全局唯一是最基本的要求. 1.2.趋势有序 业务上分页查询需求,排序需求,如果ID直接有序,则不必建立更多的索引,增加查询条件. 而且Mysql Inn ...

  8. leetcode刷题-47全排列2

    题目 给定一个可包含重复数字的序列,返回所有不重复的全排列. 思路 其思路与46题完全一致,但是需要与组合总和2题一般,在同一层取出重复元素.因此可以在每一层设置一个set()类型,将访问过的元素放入 ...

  9. HTML标签语言一览表

    <html> ● 文件声明 让浏览器知道这是 html 文件 <head> ● 开头 提供文件整体资讯 <title> ● 标题 定义文件标题,将显示于浏览顶端 & ...

  10. [LeetCode]Sql系列4

    ##题目1 626. 换座位 小美是一所中学的信息科技老师,她有一张 seat 座位表,平时用来储存学生名字和与他们相对应的座位 id. 其中纵列的 id 是连续递增的 小美想改变相邻俩学生的座位. ...