东南大学计算机图形学精华讲义:OpenGL编程解析

5星 · 超过95%的资源 需积分: 9 24 下载量 86 浏览量 更新于2024-07-31 收藏 613KB PDF 举报
"东南大学的计算机图形学内部教学材料,包含OpenGL编程的讲解,适合学习图形学和API的使用。" 计算机图形学是计算机科学的一个重要分支,它专注于研究如何在计算机中表示、处理和显示图形。这个领域涉及到数学、算法和硬件优化等多个方面,广泛应用于游戏开发、影视特效、工程设计、科学研究等多个领域。计算机图形学通过复杂的数学模型和算法,将抽象的数据转化为可视化图像,使用户能够与之交互。 OpenGL是计算机图形学中的一种广泛应用的图形库,最初由Silicon Graphics Inc. (SGI)开发。它是一个开放的、与平台无关的应用程序编程接口(API),允许开发者在不同的操作系统和硬件平台上创建高性能的三维图形应用。OpenGL的核心库包含了基本的图形绘制和处理功能,如顶点处理、颜色设置、纹理映射等。由于它不直接处理窗口系统和输入设备,所以需要其他辅助库来完成这些任务,比如GLUT(OpenGL实用工具库)和特定平台的连接库,如GLX(用于X Window系统)、WGL(用于Windows)和AGL(用于Macintosh)。 GLUT库为跨平台的OpenGL编程提供了基础支持,包括创建窗口、获取输入事件、创建菜单等功能,使得代码能够方便地在不同操作系统之间移植。然而,GLUT的功能相对有限,对于更复杂或者平台特定的需求,开发者通常会转向更强大的窗口系统工具包。 在学习OpenGL编程时,通常分为正向学习和反向学习两种方法。正向学习是从基本概念和简单示例开始,逐步掌握OpenGL的管线流程,包括顶点坐标变换、投影、裁剪、屏幕映射等步骤。反向学习则更注重从实际需求出发,逆向理解OpenGL的工作原理,以解决具体问题。 在第二章OpenGL编程中,会介绍OpenGL的基本概念,如OpenGL的起源和特点,以及如何编写一个简单的OpenGL程序。还会涉及三维图形的绘制,包括坐标系统、视图变换、光照处理等内容,这些都是构建复杂三维场景的基础。 这份东南大学的计算机图形学材料不仅涵盖了理论知识,还结合OpenGL的实际应用,为学习者提供了一个全面了解和掌握图形学的起点。通过深入学习,可以提升对图形渲染、交互设计和软件移植的理解,为未来在图形相关领域的工作打下坚实基础。

SELECT PIS.SHOW_FLT_DETAIL AS SHOW_FLT_DETAIL -- new , PIS.SHOW_AWB_DETAIL AS SHOW_AWB_DETAIL -- new , PIS.DISPLAY_AIRLINE_CODE AS CARRIER_CODE , DECODE(PIS.REVERT_FLOW,'N',PIS.FLOW_TYPE,DECODE(PIS.FLOW_TYPE,'I','E','I')) AS FLOW_TYPE , PIS.SHIP_TO_LOCATION AS SHIP_TO_LOCATION , PIS.INVOICE_SEQUENCE AS INVOICE_SEQUENCE , PFT.FLIGHT_DATE AS FLIGHT_DATE , PFT.FLIGHT_CARRIER_CODE AS FLIGHT_CARRIER_CODE , PFT.FLIGHT_SERIAL_NUMBER AS FLIGHT_SERIAL_NUMBER , PFT.FLOW_TYPE AS AIRCRAFT_FLOW , FAST.AIRCRAFT_SERVICE_TYPE AS AIRCRAFT_SERVICE_TYPE , PPT.AWB_NUMBER AS AWB_NUMBER , PPT.WEIGHT AS WEIGHT , PPT.CARGO_HANDLING_OPERATOR AS CARGO_HANDLING_OPERATOR , PPT.SHIPMENT_PACKING_TYPE AS SHIPMENT_PACKING_TYPE , PPT.SHIPMENT_FLOW_TYPE AS SHIPMENT_FLOW_TYPE , PPT.SHIPMENT_BUILD_TYPE AS SHIPMENT_BUILD_TYPE , PPT.SHIPMENT_CARGO_TYPE AS SHIPMENT_CARGO_TYPE , PPT.REVENUE_TYPE AS REVENUE_TYPE , PFT.JV_FLIGHT_CARRIER_CODE AS JV_FLIGHT_CARRIER_CODE , PPT.PORT_TONNAGE_UID AS PORT_TONNAGE_UID , PPT.AWB_UID AS AWB_UID , PIS.INVOICE_SEPARATION_UID AS INVOICE_SEPARATION_UID , PFT.FLIGHT_TONNAGE_UID AS FLIGHT_TONNAGE_UID FROM PN_FLT_TONNAGES PFT , FZ_AIRLINES FA , PN_TONNAGE_FLT_PORTS PTFP , PN_PORT_TONNAGES PPT , FF_AIRCRAFT_SERVICE_TYPES FAST , SR_PN_INVOICE_SEPARATIONS PIS --new , SR_PN_INVOICE_SEP_DETAILS PISD--new , SR_PN_INV_SEP_PORT_TONNAGES PISPT --new WHERE PFT.FLIGHT_OPERATION_DATE >= trunc( CASE :rundate WHEN TO_DATE('01/01/1900', 'DD/MM/YYYY') THEN ADD_MONTHS(SYSDATE,-1) ELSE ADD_MONTHS(:rundate,-1) END, 'MON') AND PFT.FLIGHT_OPERATION_DATE < trunc( CASE :rundate WHEN TO_DATE('01/01/1900', 'DD/MM/YYYY') THEN TRUNC(SYSDATE) ELSE TRUNC(:rundate) END, 'MON') AND PFT.TYPE IN ('C', 'F') AND PFT.RECORD_TYPE = 'M' AND (PFT.TERMINAL_OPERATOR NOT IN ('X', 'A') OR (PFT.TERMINAL_OPERATOR <> 'X' AND FA.CARRIER_CODE IN (SELECT * FROM SPECIAL_HANDLING_AIRLINE) AND PPT.REVENUE_TYPE IN (SELECT * FROM SPECIAL_REVENUE_TYPE) AND PPT.SHIPMENT_FLOW_TYPE IN (SELECT * FROM SPECIAL_SHIPMENT_FLOW_TYPE) AND PFT.FLIGHT_OPERATION_DATE >= (select EFF_DATE from SPECIAL_HANDLING_EFF_DATE) )) AND PFT.DELETING_DATETIME IS NULL AND FA.AIRLINE_UID = PFT.AIRLINE_UID AND FA.DELETING_DATETIME IS NULL AND PTFP.FLIGHT_TONNAGE_UID = PFT.FLIGHT_TONNAGE_UID AND PTFP.RECORD_TYPE = 'M' AND PTFP.DELETING_DATETIME IS NULL AND PPT.TONNAGE_FLIGHT_PORT_UID (+)= PTFP.TONNAGE_FLIGHT_PORT_UID AND PPT.RECORD_TYPE (+)= 'M' AND PPT.DISCREPANCY_TYPE (+)= 'NONE' AND PPT.ADJUSTMENT_INC_FLAG (+)= 'Y' AND PPT.DELETING_DATETIME (+) IS NULL AND FAST.AIRCRAFT_SERVICE_TYPE_UID = PFT.AIRCRAFT_SERVICE_TYPE_UID AND FAST.DELETING_DATETIME IS NULL AND PIS.TEMPORAL_NAME = TO_CHAR((CASE :rundate --new WHEN TO_DATE('01/01/1900', 'DD/MM/YYYY') THEN TRUNC(SYSDATE) ELSE TRUNC(:rundate) END ), 'YYYYMM') || '00' AND PIS.INVOICE_SEPARATION_UID = PISD.INVOICE_SEPARATION_UID --new AND PISD.INVOICE_SEP_DETAIL_UID = PISPT.INVOICE_SEP_DETAIL_UID --new AND PISPT.PORT_TONNAGE_UID = PPT.PORT_TONNAGE_UID --new AND PIS.PRINT_SUPPORTING_DOC = 'Y';上面是oracle的写法,请转成spark SQL的写法。

2023-06-02 上传