《TypeScript图形渲染实战:2D架构设计与实现》 —3.2.11 Canvas2DApplication子类和We

举报
华章计算机 发表于 2019/12/12 19:25:32 2019/12/12
【摘要】 本节书摘来自华章计算机《TypeScript图形渲染实战:2D架构设计与实现》 一书中第3章,第3.2.11节,作者是步磊峰。

3.2.11  Canvas2DApplication子类和WebGLApplication子类

  Canvas2DApplication子类和WebGLApplication子类其实很简单,可以从Application中的public成员变量canvas中调用getContext方法,根据不同的实参获取CanvasRendering Context2D对象或WebGLRenderingContext对象。具体代码如下:

 

export class Canvas2DApplication extends Application {

    public context2D : CanvasRenderingContext2D | null ;

    public constructor ( canvas : HTMLCanvasElement , contextAttributes  :

    Canvas2DContextAttributes ) {

        super( canvas ) ;

        this . context2D = this . canvas . getContext( "2d" , context

        Attributes ) ;

    }

}

export class WebGLApplication extends Application {

    public context3D : WebGLRenderingContext | null ;

    public constructor ( canvas : HTMLCanvasElement , contextAttributes  :

    WebGLContextAttributes ) {

        super( canvas ) ;

        this . context3D = this . canvas . getContext( "webgl" , context

        Attributes ) ;

        if ( this . context3D === null ) {

            this . context3D = this . canvas . getContext("experimental-

            webgl" , contextAttributes ) ;

            if ( this . context3D === null ) {

                alert ( " 无法创建WebGLRenderingContext上下文对象 " ) ;

                throw new Error ( "无法创建WebGLRenderingContext上下文对象" ) ;

            }

        }

    }

}

  

  这两个类实际上仅仅是获取2D / 3D渲染上下文对象,如果要进行具体的渲染逻辑,那么可以继续继承,然后进行相关业务逻辑的扩展,后面的章节会使用Canvas2D Application类,到时候再详细地了解相关细节。

  至此,Application及子类都介绍完毕,下一节来测试一下Application类是否有效。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。