一个简单的WebGL例子

Posted 孤独剑搞开发

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个简单的WebGL例子相关的知识,希望对你有一定的参考价值。

首先还是感谢大家的持续关注。遥想上一篇文章,已经是去年(2017)的事情了。一个简单的WebGL例子一个简单的WebGL例子  既然之前已经说了怎么写一个TS程序,那今天我们就直入主题。很多搞WebGL的童鞋可能都听过ThreeJS, 它是用javascript写的一个webgl第三方库,今天我们就尝试用TypeScript写ThreeJS一个例子。按照惯例,我们还是先来看看效果:

一个简单的WebGL例子

其实就是官网的一个例子,但是,今天我们将用TS来写


源代码解析

一个简单的WebGL例子

我们首先创建了一个类:SceneExample,然后给它添加了四个私有成员变量和两个成员函数。其中构造函数是必须的,主要对类的成员变量做一些初始化的工作:

一个简单的WebGL例子

然后是成员函数animate(),我们用它来执行渲染:

一个简单的WebGL例子

然后我们用一个命名空间:example把上边定义的类包起来,然后用export关键字来修饰类名,这样我们就可以在命名空间外使用刚刚创建的类了。最后我们把上述代码保存在一个名为scene_example.ts的文件中。

这里有一个坑,是啥捏:就是我们这里写的是TS文件,但是想用ThreeJS的东西,而这个玩意儿是用JS来写的,咋解决呢?

一种方法是用import的方式,就像前边代码中最开始注释掉的那行,但是当我们在另外一个TS文件中想用我们上边创建的SceneExample类时就会得到一个错误,说找不到这个类。

另外一种方法是:用npm的方式来安装ThreeJS的类型定义文件:

npm install --save @types/three

然后我们gulp编译,发现坑又来啦:

一个简单的WebGL例子

我靠,一堆错误,咋解决,google吧一个简单的WebGL例子,很快,解决办法有了:

npm install --save @types/node

然后我们的编译顺利通过一个简单的WebGL例子一个简单的WebGL例子一个简单的WebGL例子

然后新建main.ts文件,并将下属代码放入其中:

一个简单的WebGL例子

如果我们把之前的export关键字拿掉,那么这个地方将会提示SceneExample未定义,这就是命名空间的作用。

这里我们还是用gulp来进行编译,配置文件tsconfig.json如下:

一个简单的WebGL例子

gulpfile.js的内容如下:

一个简单的WebGL例子

这样在控制台执行:gulp

结束后我们将在项目根目录的build/example下边得到两个同名的js文件:

一个简单的WebGL例子

然后我们在该目录下新建scene_example.html文件,其内容如下:

一个简单的WebGL例子

最后用浏览器打开该文件即可看到最开始我们给出的结果。

今天就先到这里,完整的代码,大家可以在我的github上边找到(点下边的阅读原文即可),嘿嘿嘿一个简单的WebGL例子

以上是关于一个简单的WebGL例子的主要内容,如果未能解决你的问题,请参考以下文章

WebGL简易教程:向着色器传输数据

01 最简单的WebGL程序

webGL初步了解,最简单的方式了解webgl

unity打包webgl-简单的ui界面

WebGL编程起步

用webgl打造一款简单第一人称射击游戏