码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 轻量封装WebGPU渲染系统示例<32>- 若干线框对象(源码)


    当前示例源码github地址:

    https://github.com/vilyLei/voxwebgpu/blob/feature/rendering/src/voxgpu/sample/WireframeEntityTest.ts

    当前示例运行效果:

    此示例基于此渲染系统实现,当前示例TypeScript源码如下:

    1. export class WireframeEntityTest {
    2. private mRscene = new RendererScene();
    3. initialize(): void {
    4. this.initEvent();
    5. this.initScene();
    6. }
    7. private initEvent(): void {
    8. const rc = this.mRscene;
    9. rc.addEventListener(MouseEvent.MOUSE_DOWN, this.mouseDown);
    10. new MouseInteraction().initialize(rc, 0, false).setAutoRunning(true);
    11. }
    12. private mouseDown = (evt: MouseEvent): void => {};
    13. private initScene(): void {
    14. const rc = this.mRscene;
    15. let axis = new AxisEntity();
    16. rc.addEntity(axis);
    17. let entities = [
    18. new SphereEntity(),
    19. new BoxEntity(),
    20. new CylinderEntity({ alignYRatio: 0.0 }),
    21. new CubeEntity({ cubeSize: 130 }),
    22. new TorusEntity({ radius: 110, axisType: 1 }),
    23. new PlaneEntity({ axisType: 1, extent: [-80, -80, 160, 160], doubleFace: true }),
    24. new ConeEntity({ alignYRatio: 0.0 })
    25. ];
    26. let ls = entities;
    27. entities = [];
    28. // random sorting
    29. for (let i = 0, ln = ls.length; i < ln; ++i) {
    30. const k = Math.round(Math.random() * 888) % ls.length;
    31. entities.push(ls[k]);
    32. ls.splice(k, 1);
    33. }
    34. let radius = 300.0;
    35. for (let i = 0; i < entities.length; ++i) {
    36. let rad = (2.0 * Math.PI * i) / entities.length;
    37. let entity = entities[i].setAlbedo(new Color4().randomRGB(1.5, 0.1));
    38. entity.arm = [1.1, Math.random() * 0.95 + 0.05, Math.random() * 0.9 + 0.1];
    39. entity.transform.setPosition([radius * Math.cos(rad), 0, radius * Math.sin(rad)]);
    40. rc.addEntity(entity);
    41. }
    42. radius += 230;
    43. for (let i = 0; i < entities.length; ++i) {
    44. let rad = (2.0 * Math.PI * i) / entities.length + 0.5;
    45. let entity = entities[i].clone({ geometry: entities[i].geometry, doubleFace: true, wireframe: true });
    46. entity.transform.setPosition([radius * Math.cos(rad), 0, radius * Math.sin(rad)]);
    47. rc.addEntity(entity);
    48. }
    49. }
    50. run(): void {
    51. this.mRscene.run();
    52. }
    53. }

  • 相关阅读:
    5. informer源码分析-概要分析
    基于SD卡的嵌入式Linux系统镜像制作
    【设计模式】状态模式 (c++实现)
    程序包 applets.user.service.UserService 不存在-2022新项目
    自动化测试 | Selenium自动化测试框架,实战遇到的坑都在这了,玩转自动化测试
    硕士开题报告模板、博士专家推荐信、科研课题申报模板大全
    CRMEB 二开短信功能教程
    【PyQt小知识 - 3】: QComboBox下拉框内容的设置和更新、默认值的设置、值和下标的获取
    开放开源开先河(一)
    图片编辑器tui-image-editor
  • 原文地址:https://blog.csdn.net/vily_lei/article/details/134429085
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号