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. CSP 201312-1 出现次数最多的数

    思路 由于输入的数组元素是 1 ≤ si ≤ 10000,所以开一个 10001 的数组.输入的过程中使用 num 记录出现的最大次数: 在所有输入结束后,遍历数组元素,由于题目要求出现多个众数输出最 ...

  2. synchronized的实现原理——对象头解密

    前言 并发编程式Java基础,同时也是Java最难的一部分,因为与底层操作系统和硬件息息相关,并且程序难以调试.本系列就从synchronized原理开始,逐步深入,领会并发编程之美. 正文 基础稍微 ...

  3. unity 对Animator动画系统的研究

    unity的新动画系统叫Mecanim,使用Animator来取代旧系统Animation,按Unity文档的惯例:知识点主要分2部分:unity manual和unity script,读者可以边看 ...

  4. iOS 64位静态链接库

    https://www.jianshu.com/p/486e3b737707 https://stackoverflow.com/questions/44635297/setting-an-ios-s ...

  5. 深入了解Netty【五】线程模型

    引言 不同的线程模型对程序的性能有很大的影响,Netty是建立在Reactor模型的基础上,要搞清Netty的线程模型,需要了解一目前常见线程模型的一些概念. 具体是进程还是线程,是和平台或者编程语言 ...

  6. 【小白学PyTorch】7 最新版本torchvision.transforms常用API翻译与讲解

    文章来自:微信公众号[机器学习炼丹术].欢迎关注支持原创 也欢迎添加作者微信:cyx645016617. 参考目录: 目录 1 基本函数 1.1 Compose 1.2 RandomChoice 1. ...

  7. vue 0点定时网络请求

    export default { data() { return { timer: null, currentTime: '', zeroTime: '00:00:05', // zeroTime: ...

  8. Sender(agumaster_crawler)->RabbitMq->Reciever(agumaster)

    发送方: package com.heyang.agumasterCrawler; import java.util.List; import org.springframework.beans.fa ...

  9. 4.FFMPEG-AVFrame

    在ffmpeg中,解码前的数据结构体为AVPacket(参考:3.AVPacket使用),而解码后的数据为AVFrame(视频的YUV, RGB, 音频的PCM,数据量更大) 1.AVFrame介绍 ...

  10. 购书网站前端实现(HTML+CSS+JavaScript)

    购书+阅读静态网页设计与实现 一.主页设计HTML 1.效果展示及实现 2.完整代码 二.主页样式布局CSS 三.空间功能实现Javascript 主要功能 Javascript完整代码: 总结 购书 ...