1.用Python和OpenGL探索数据可视化(基础篇)- OpenGL简介及演化
2.java å°å¦å
3.用Python和OpenGL探索数据可视化(三维篇)- 创建三维坐标轴类和立方体类
用Python和OpenGL探索数据可视化(基础篇)- OpenGL简介及演化
在年三十,祝福各位知友在甲辰龙年身体健康、万事如意!
OpenGL,即开放图形库,是神奇先知指标源码应用于图形硬件的API。它由数百个子程序和函数构成,旨在帮助程序员指定着色器程序、对象及操作,以生成高质量图形图像,特别是三维对象的彩色图像。
OpenGL成为行业标准,因其独立于窗口系统和操作系统,雷达源码使软件开发者在各种设备上(如手机、平板、台式机、笔记本、工作站及超级计算机)能够开发高性能、视觉效果引人注目的二维、三维图形软件。这些应用覆盖了如CAD、CAE、科学可视化、内容创作、能源、leapmotion源码娱乐、游戏开发、制造、医疗和虚拟现实等多个领域。
Khronos Group自年起负责OpenGL API规范的制定,截至年2月,官方已发布个版本。对于OpenGL的详细发展历史,可访问Khronos Group的官方网站。OpenGL使用的渲染管线和核心对象自4.3版本后基本稳定,如图所示。
考虑到计算机图形硬件的ctpqt源码迅速发展,Khronos Group从年起开始开发新一代OpenGL,即Vulkan。Vulkan是一种比OpenGL更接近硬件的低级API,可直接控制GPU,从而在各种硬件上实现更高效的渲染和更好的性能。
掌握OpenGL中的渲染管线、着色器及GLSL对学习和应用Vulkan仍然有所帮助。
如需查阅更多详细信息,可参考以下链接:
registry.khronos.org/Op...
khronos.org/opengl/
khronos.org/opengl/wiki...
本系列文章的源代码已上传至Gitee。
以下为文章系列摘要:
1. 《用Python和OpenGL探索数据可视化(基础篇)- 你好,窗口!》
2. 《用Python和OpenGL探索数据可视化(基础篇)- 你好,windump源码OpenGL!》
3. 《用Python和OpenGL探索数据可视化(基础篇)- 你好,ImGui!》
4. 《用Python和OpenGL探索数据可视化(基础篇)- 你好,小不点!》
5. 《用Python和OpenGL探索数据可视化(基础篇)- 重构代码“你好,小不点!”》
6. 《用Python和OpenGL探索数据可视化(基础篇)- “你好,线段!”》
7. 《用Python和OpenGL探索数据可视化(基础篇)- 重构代码组织OpenGL核心对象包pygl》
8. 《用Python和OpenGL探索数据可视化(基础篇)- 你好,三角形!》
9. 《用Python和OpenGL探索数据可视化(基础篇)- 改进OpenGL程序Program类》
. 《用Python和OpenGL探索数据可视化(基础篇)- 你好,矩形!》
. 《用Python和OpenGL探索数据可视化(基础篇)- 完善pygl增加索引缓存对象EBO》
. 《用Python和OpenGL探索数据可视化(基础篇)- 你好,纹理!》
. 《用Python和OpenGL探索数据可视化(基础篇)- 完善pygl增加OpenGL二维纹理对象》
. 《用Python和OpenGL探索数据可视化(基础篇)- 细说纹理环绕》
. 《用Python和OpenGL探索数据可视化(基础篇)- 细说纹理过滤》
. 《用Python和OpenGL探索数据可视化(基础篇)- 处理键盘和鼠标事件》
. 《用Python和OpenGL探索数据可视化(三维篇)- 你好,坐标轴》
. 《用Python和OpenGL探索数据可视化(三维篇)- 用立方体体验模型矩阵》
. 《用Python和OpenGL探索数据可视化(三维篇)- 创建三维坐标轴类和立方体类》
. 《用Python和OpenGL探索数据可视化(三维篇)- 与照相机“共舞”》
. 《用Python和OpenGL探索数据可视化(三维篇)- 创建照相机类》
. 《用Python和OpenGL探索数据可视化(三维篇)- 四元数和轨迹球照相机》
java å°å¦å
å¼ç¯è¯
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级-1 å¦ä¹ Javaçå ³é®åå¨Javaç§å¡¾å¦ä»ä¹
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级-2 é¨åå¦ä¹ æ¹æ³ãå 个éè¦çå±å-1
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级-3 å 个éè¦çå±å-2ï¼ä¸è¯¾å»ºè®®
第ä¸ç« Javaå ¥é¨
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级-4 Javaæ¯ä»ä¹ãæä»ä¹
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级-5 Javaè½å¹²ä»ä¹
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级-6 é²è¯Javaï¼Javaåå²ãJava大äºè®°ãJavaç¹ç¹ãJavaæ åç»ç»JCPï¼
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级-7 æ建Javaå¼åç¯å¢
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级-8 HelloWorld以ååå¦Javaçä¸äºå¸¸è§é误
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级-9 Javaçåºæ¬è¿è¡æµç¨
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- Javaææ¯ä¸å¤§ç¹æ§-èææº
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- Javaææ¯ä¸å¤§ç¹æ§-åå¾åæ¶
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- Javaææ¯ä¸å¤§ç¹æ§-代ç å®å ¨
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- 第ä¸ç« å°ç»
第äºç« Javaåºç¡è¯æ³
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- å ³é®å
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- æ è¯ç¬¦
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- åºæ¬æ°æ®ç±»å-1
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- åºæ¬æ°æ®ç±»å-2
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- åºæ¬æ°æ®ç±»å-3
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- Stringç±»å
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- 常éåé
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- Java代ç çåºç¡ç¥è¯
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- è¿ç®ç¬¦-1
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- è¿ç®ç¬¦-2
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- è¿ç®ç¬¦-3
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- åæ¯æ§å¶è¯å¥if-else-1
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- åæ¯æ§å¶è¯å¥if-else-2
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- åæ¯æ§å¶è¯å¥switch
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- 循ç¯æ§å¶è¯å¥for-1
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- 循ç¯æ§å¶è¯å¥for-2
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- 循ç¯æ§å¶è¯å¥whileådo-while
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- ç¹æ®å¾ªç¯æ§å¶è¯å¥breakãcontinueåæ ç¾
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- 第äºç« å°ç»-1
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- 第äºç« å°ç»-2
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- ç¼ç¨ä½ä¸ç¤ºä¾è®²è§£
第ä¸ç« ç±»å对象
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- ä»ä¹æ¯å¯¹è±¡
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- 对象çæ½è±¡
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- æ½è±¡å¯¹è±¡åå®ä½å¯¹è±¡çå ³ç³»
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- å¦ä½ç¨Java表达æ½è±¡å¯¹è±¡
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- å package-1
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- å package-2
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- importåJavaç±»çæ寻æ¹å¼
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- 访é®ä¿®é¥°ç¬¦
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- ç±»çå®ä¹åæé æ¹æ³
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- å±æ§åæ¹æ³-1
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- å½¢åå®å
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- æ¹æ³-2
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- åæ°å¯åçæ¹æ³
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- å¦ä½ä½¿ç¨ä¸ä¸ªJavaç±»-newå ³é®å
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- å¦ä½ä½¿ç¨ä¸ä¸ªJavaç±»-thiså ³é®å
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- Javaç±»çåºæ¬è¿è¡é¡ºåº
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- å®ä¾åéåå±é¨åé
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- åéçåå§åååéçèå´
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- ç¼ç¨ä½ä¸è®²è§£-å¦ä½åmainæ¹æ³ä¼ å
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- ç¼ç¨ä½ä¸è®²è§£-åæé¢ç®ï¼å解质å æ°ãæ±å®æ°ï¼
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- é¢å对象ä¸å¤§ç¹æ§-å°è£
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- é¢å对象ä¸å¤§ç¹æ§-继æ¿
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- é¢å对象ä¸å¤§ç¹æ§-å¤æ
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- ä»ä¹æ¯å¼ç¨ç±»å
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- æå¼ä¼ éåæå¼ç¨ä¼ é-1
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- æå¼ä¼ éåæå¼ç¨ä¼ é-2
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- æå¼ä¼ éåæå¼ç¨ä¼ é-3
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- 课å å°æµéª
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- å è£ ç±»-1
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- å è£ ç±»-2
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- å è£ ç±»-3
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- ç±»å转æ¢
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- 第ä¸ç« å°ç»-1
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- 第ä¸ç« å°ç»-2
第åç« Javaç±»çé«çº§ç¹æ§
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- Java继æ¿çè¿è¡é¡ºåº
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- superå ³é®å-1
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- superå ³é®å-2
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- éå½ç¨åºè®²è§£-1
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- éå½ç¨åºè®²è§£-2
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- è¡¥å ä½ä¸
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- ä»ä¹æ¯æ¹æ³çè¦ç
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- æ¹æ³è¦çä¸å°åºè¿è¡åªä¸ä¸ªæ¹æ³
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- æ¹æ³è¦ççåå
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- ä»ä¹æ¯æ¹æ³éè½½
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- æ¹æ³éè½½çè§å
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- Javaçå¤æ
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- ä»ä¹æ¯static修饰符
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- staticå±æ§çå ååé
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- staticçåºæ¬è§å
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- éæå¼å ¥
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- final修饰符-1
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- final修饰符-2
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- å é¨ç±»-1
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- å é¨ç±»-2
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- åè°Javaçå ååé -1
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- åè°Javaçå ååé -2
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- Stringçå ååé -1
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- Stringçå ååé -2
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- 第åç« å°ç»
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- ç¼ç¨ä½ä¸ç¤ºä¾è®²è§£-æå°ä¹æ³å£è¯è¡¨ãè¾åºè¦æ±çå¾å½¢
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- ç¼ç¨ä½ä¸ç¤ºä¾è®²è§£-å解质å æ°
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- ç¼ç¨ä½ä¸ç¤ºä¾è®²è§£-æ±å®æ°ãå¼¹çé®é¢
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- ç¼ç¨ä½ä¸ç¤ºä¾è®²è§£-èè离å¼æ¨æé®é¢ç对象æ½è±¡
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- ç¼ç¨ä½ä¸ç¤ºä¾è®²è§£-èè离å¼æ¨æé®é¢çå®ç°-1
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- ç¼ç¨ä½ä¸ç¤ºä¾è®²è§£-èè离å¼æ¨æé®é¢çå®ç°-2
第äºç« æ°ç»åæ举
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- æ°ç»æ¯ä»ä¹åæ°ç»å£°æ
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- æ°ç»å建åæ°ç»çå ååé
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- æ°ç»çåå§å
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- æ°ç»å ç´ ç访é®
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- å¤ç»´æ°ç»çæ¦å¿µãå®ä¹ãåå§åååºæ¬çå ååé
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- å¤ç»´æ°ç»å ååé 示æå¾åå®ä¹å®ä¾
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- å¤ç»´æ°ç»ç¤ºä¾åæ¬è´¨
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- æ°ç»æ·è´
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- åºæ¬çæåºç®æ³-å泡æåº
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- åºæ¬çæåºç®æ³-éæ©æåºåæå ¥æ³æåº
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- åºæ¬çæåºç®æ³-å¸å°æåº
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- æ°ç»çæåº
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- æ举
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- 第äºç« å°ç»
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- ç¼ç¨ä½ä¸ç¤ºä¾è®²è§£-è¿å¶è½¬æ¢çå®ç°-1
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- ç¼ç¨ä½ä¸ç¤ºä¾è®²è§£-è¿å¶è½¬æ¢çå®ç°-2
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- ç¼ç¨ä½ä¸ç¤ºä¾è®²è§£-è¿å¶è½¬æ¢çå®ç°åæ©å±-3
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- ç¼ç¨ä½ä¸ç¤ºä¾è®²è§£-å¤æ天æ°é®é¢çå®ç°
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- ç¼ç¨ä½ä¸ç¤ºä¾è®²è§£-ç¨åºæ±è§£æé»è¾é¢çå®ç°-1
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- ç¼ç¨ä½ä¸ç¤ºä¾è®²è§£-ç¨åºæ±è§£æé»è¾é¢çå®ç°-2
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- ç¼ç¨ä½ä¸ç¤ºä¾è®²è§£-ç¨åºæ±è§£æé»è¾é¢çå®ç°-3
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- ç¼ç¨ä½ä¸ç¤ºä¾è®²è§£-ç¨åºæ±è§£æé»è¾é¢çå®ç°-4
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- ç¼ç¨ä½ä¸ç¤ºä¾è®²è§£-ç¨åºæ±è§£æé»è¾é¢çå®ç°-5
第å ç« å¸¸è§ç±»ç使ç¨
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- Objectç±»
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- equalsæ¹æ³çæ¦å¿µãObjectä¸çå®ç°ãåºæ¬è§å
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- equalsæ¹æ³å==çèç³»ååºå«
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- è¦çequalsæ¹æ³çåºæ¬å®ç°-1ãæ¥çStringç±»çequalså®ç°
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- è¦çequalsæ¹æ³çåºæ¬å®ç°-2ï¼hashCodeæ¹æ³
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- è¦çequalsæ¹æ³éè¦çhashCodeæ¹æ³ãè¦çhashCodeæ¹æ³çåºæ¬å®ç°
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- toStringæ¹æ³çåè½ãå®ä¹ååºæ¬å®ç°
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- ä¿®æ¹JDKçæºä»£ç æ¥ä½ä¼toStringæ¹æ³çåè½
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- String类常ç¨æ¹æ³ç¤ºä¾-1
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- String类常ç¨æ¹æ³ç¤ºä¾-2
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- String类常ç¨æ¹æ³ç¤ºä¾-3
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- String类常ç¨æ¹æ³ç¤ºä¾-4
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- String类常ç¨æ¹æ³ç¤ºä¾-5
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- String类常ç¨æ¹æ³ç¤ºä¾-6
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- String类常ç¨æ¹æ³ç¤ºä¾-7
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- String类常ç¨æ¹æ³ç¤ºä¾-8
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- ç¼ç¨ä½ä¸ç¤ºä¾è®²è§£-åå ä¼è®®é¢ç®çå®ç°-1
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- ç¼ç¨ä½ä¸ç¤ºä¾è®²è§£-åå ä¼è®®é¢ç®çå®ç°-2
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- cloneæ¹æ³çåºæ¬æ¦å¿µãåè½åæµ åº¦å éçå®ç°
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- cloneæ¹æ³çåºæ¬ä½¿ç¨
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- æ£å表达å¼çåºæ¬æ¦å¿µååºæ¬è¯æ³
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- Javaä¸å¦ä½ä½¿ç¨æ£å表达å¼
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- æ£å表达å¼çå å符ãéå¤ãå符类å常è§çæ£å表达å¼
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- StringBufferåStringBuilder
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- Math类常ç¨æ¹æ³ç¤ºä¾-1
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- Math类常ç¨æ¹æ³ç¤ºä¾-2
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- Math类常ç¨æ¹æ³ç¤ºä¾-3
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- æ¥æç±»ï¼DateãDateFormatãCalendarï¼å¸¸ç¨æ¹æ³ç¤ºä¾-1
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- æ¥æç±»ï¼DateãDateFormatãCalendarï¼å¸¸ç¨æ¹æ³ç¤ºä¾-2
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- æ¥æç±»ï¼DateãDateFormatãCalendarï¼å¸¸ç¨æ¹æ³ç¤ºä¾-3
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- æ¥æç±»ï¼DateãDateFormatãCalendarï¼å¸¸ç¨æ¹æ³ç¤ºä¾-4
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- æ¥æç±»ï¼DateãDateFormatãCalendarï¼å¸¸ç¨æ¹æ³ç¤ºä¾-5
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- æ¥æç±»ï¼DateãDateFormatãCalendarï¼å¸¸ç¨æ¹æ³ç¤ºä¾-6
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- System类常ç¨æ¹æ³ç¤ºä¾-1
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- System类常ç¨æ¹æ³ç¤ºä¾-2
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- System类常ç¨æ¹æ³ç¤ºä¾-3
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- 第å ç« å°ç»
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- ç¼ç¨ä½ä¸ç¤ºä¾è®²è§£-模æå¨ææ°ç»æéåçå®ç°
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- ç¼ç¨ä½ä¸ç¤ºä¾è®²è§£-模æå¨ææ°ç»æéåç使ç¨åæµè¯
第ä¸ç« æ½è±¡ç±»åæ¥å£
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- æ½è±¡ç±»çå®ä¹ã示ä¾ã使ç¨
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- æ½è±¡ç±»ç使ç¨ä¾å
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- æ½è±¡ç±»åæ½è±¡æ¹æ³
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- æ¥å£çæ¦å¿µãå®ä¹ã示ä¾
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- å¦ä½ä½¿ç¨æ¥å£ã为ä»ä¹è¦ä½¿ç¨æ¥å£
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- æ¥å£çåºæ¬ä½ç¨ãextendsåimplements
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- æ¥å£çåºæ¬ææ³-1ãç»ä»¶çæ¦å¿µ
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- æ¥å£çåºæ¬ææ³-2ãæ¥å£åç»ä»¶çå ³ç³»ãæ¥å£åæ½è±¡ç±»çéæ©
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- 第ä¸ç« å°ç»
ç¬¬å «ç« å¼å¸¸åæè¨
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- ä»ä¹æ¯å¼å¸¸
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- å¼å¸¸å¤ç模åtry-catch-finally-1
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- å¼å¸¸å¤ç模åtry-catch-finally-2
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- å¼å¸¸å¤ç模åthrow-throws-1
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- å¼å¸¸å¤ç模åthrow-throws-2
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- å¼å¸¸åç±»åèªå®ä¹å¼å¸¸
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- æè¨
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- ç¬¬å «ç« å°ç»
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- ç¼ç¨ä½ä¸ç¤ºä¾è®²è§£-åæ²¹é®é¢çåæå对象æ½è±¡
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- ç¼ç¨ä½ä¸ç¤ºä¾è®²è§£-åæ²¹é®é¢çå ·ä½å®ç°-1
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- ç¼ç¨ä½ä¸ç¤ºä¾è®²è§£-åæ²¹é®é¢çå ·ä½å®ç°-2
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- ç¼ç¨ä½ä¸ç¤ºä¾è®²è§£-åæ²¹é®é¢çå ·ä½å®ç°-3
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- ç¼ç¨ä½ä¸ç¤ºä¾è®²è§£-åæ²¹é®é¢çå ·ä½å®ç°-4
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- ç¼ç¨ä½ä¸ç¤ºä¾è®²è§£-åæ²¹é®é¢çå ·ä½å®ç°-5
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- ç¼ç¨ä½ä¸ç¤ºä¾è®²è§£-åæ²¹é®é¢çæ©å±
项ç®ï¼æ¨¡æé¶è¡ç³»ç»
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- 模æé¶è¡ç³»ç»çä¸å¡è®²è§£
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- 模åçååæ¹å¼
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- æ建项ç®çå ç»æ
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- ServiceEboçå®ç°-1
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- ServiceEboçå®ç°-2
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- 项ç®å¯å¨ç±»Appçå®ç°
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- ç»å½åèåçåºæ¬å®ç°
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- èåçå®ç°
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- æä½äººå模åæ°å¢åè½çå®ç°
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- æä½äººå模åä¿®æ¹åè½çå®ç°
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- æä½äººå模åæ¥è¯¢åè½çå®ç°
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- æä½äººå模åå é¤åè½çå®ç°-1
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- æä½äººå模åå é¤åè½çå®ç°-2
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- 客æ·ç®¡ç模åçå®ç°-1
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- 客æ·ç®¡ç模åçå®ç°-2
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- å¸æ·ç®¡ç模åçå®ç°-1
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- å¸æ·ç®¡ç模åçå®ç°-2
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- å¸æ·ç®¡ç模åçå®ç°-3
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- å¼æ·çå®ç°-1
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- å¼æ·çå®ç°-2
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- å¼æ·çå®ç°-3
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- éæ·çå®ç°
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- å款ãå款çå®ç°-1
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- å款ãå款çå®ç°-2
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- å款ãå款æä½è®°å½æ¨¡åçå®ç°
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- å¨å款åè½å®ç°çå°æ¹æ·»å å款æä½è®°å½
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- å¨å款åè½å®ç°çå°æ¹æ·»å å款æä½è®°å½
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- 转å¸åè½çå®ç°-1
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- 转å¸åè½çå®ç°-2
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- åæ¢ç¨æ·çå®ç°
Javaç§å¡¾Javaè§é¢å¹è®æç¨å级- ç®åçæéçå®ç°
用Python和OpenGL探索数据可视化(三维篇)- 创建三维坐标轴类和立方体类
本系列文章讲解使用Python与OpenGL 4.5进行数据可视化开发,确保您的计算机支持OpenGL 4.5版本,建议阅读《准备工作(一)Windows下检测显卡和OpenGL信息》以确认兼容性。继续参阅《准备工作(二)配置Windows下VS Code + Python + OpenGL开发环境》以完成所需开发环境的设置。
上一节我们通过立方体学习了OpenGL的变换矩阵与模型矩阵。紧接着在《用Python和OpenGL探索数据可视化(三维篇)- 你好,坐标轴》一节中我们绘制了三维坐标轴。立方体与坐标轴是三维图形绘制中常见的元素,因此我们将在本节中通过代码重构将它们转化为专门类,以便后续的重复使用。
开始VS Code,使用File菜单下的“Open Folder”功能,打开D:\pydev\pygl并进入common文件夹,新建一个名为shaders的子文件夹。将basic文件夹下的shaders子文件夹中的axes.vs、axes.fs、cube.vs、cube.fs文件复制至common文件夹的shaders文件夹。
在common文件夹中新建axeshelper.py文件,并在其中输入相应代码。同样地,创建cube.py文件并输入对应代码。接着,在common文件夹中建立__init__.py文件,并在其中输入必要的代码。
在basic文件夹中新建一个名为cube_app_v1.py的文件,并在其中输入相应的代码。点击VS Code右上角的三角形图标以运行代码,此时会呈现预期的结果。
借助坐标轴的辅助,图形变换变得清晰且有趣。通过本系列文章中的源代码资源,您可以进一步探索和实践Python与OpenGL的数据可视化开发。
参考系列文章:1.《用Python和OpenGL探索数据可视化(基础篇)- 你好,窗口!》;2.《用Python和OpenGL探索数据可视化(基础篇)- 你好,OpenGL!》;3.《用Python和OpenGL探索数据可视化(基础篇)- 你好,ImGui!》;4.《用Python和OpenGL探索数据可视化(基础篇)- 你好,小不点!》;5.《用Python和OpenGL探索数据可视化(基础篇)- 重构代码“你好,小不点!”》;6.《用Python和OpenGL探索数据可视化(基础篇)- “你好,线段!”》;7.《用Python和OpenGL探索数据可视化(基础篇)- 重构代码组织OpenGL核心对象包pygl》;8.《用Python和OpenGL探索数据可视化(基础篇)- 你好,三角形!》;9.《用Python和OpenGL探索数据可视化(基础篇)- 改进OpenGL程序Program类》;.《用Python和OpenGL探索数据可视化(基础篇)- 你好,矩形!》;.《用Python和OpenGL探索数据可视化(基础篇)- 完善pygl增加索引缓存对象EBO》;.《用Python和OpenGL探索数据可视化(基础篇)- 你好,纹理!》;.《用Python和OpenGL探索数据可视化(基础篇)- 完善pygl增加OpenGL二维纹理对象》;.《用Python和OpenGL探索数据可视化(基础篇)- 细说纹理环绕》;.《用Python和OpenGL探索数据可视化(基础篇)- 细说纹理过滤》;.《用Python和OpenGL探索数据可视化(基础篇)- 处理键盘和鼠标事件》;.《用Python和OpenGL探索数据可视化(三维篇)- 你好,坐标轴》;.《用Python和OpenGL探索数据可视化(三维篇)- 用立方体体验模型矩阵》。