OpenGL là một thư viện đồ họa được hỗ trợ trên Mac, Windows và Linux. Mặc dù X-Plane đã chuyển sang sử dụng Vulkan/Metal làm thư viện đồ họa cơ bản, OpenGL vẫn được hỗ trợ để sử dụng bởi các plugin
Để sử dụng OpenGL với python, bạn sử dụng mô-đun python OpenGL
, cung cấp giao diện giữa python và thư viện OpenGL của hệ thống. Vì mô-đun này không được cài đặt tự động bởi python, các nhà phát triển plugin nên bao gồm một kiểm tra với thông báo lỗi hữu ích, có thể trỏ đến trang này để giúp người dùng. [Gợi ý xem bên dưới. ]
Cài đặt OpenGL
OpenGL đã có trên máy tính của bạn, điều bạn thực sự muốn làm là cài đặt gói python pyopengl. [“OpenGL” là mô-đun python đi kèm với gói “pyopengl”. ]
Cài đặt gói pyopengl
Bạn sẽ cần cài đặt pyopengl
vào phiên bản python đang được XPPython3 sử dụng. Cách dễ nhất để thực hiện việc này là sử dụng “Trình cài đặt gói Pip” đi kèm với XPPython3. Chọn mục menu đó trong khi chạy X-Plane. Xem Sử dụng PIP .
Bạn sẽ cần cài đặt gói pyopengl
Đang xác minh cài đặt
Giả sử pyopengl được cài đặt đúng cách, bạn có thể nhanh chóng xác minh thành công bằng cách chạy plugin đơn giản
import OpenGL.GL as GL def drawWindowCallback[...]: xp.setGraphicsState[...] # So it's in a known state GL.glBegin[...] do_stuff[] GL.glEnd[]0 được tìm thấy trong thư mục
import OpenGL.GL as GL def drawWindowCallback[...]: xp.setGraphicsState[...] # So it's in a known state GL.glBegin[...] do_stuff[] GL.glEnd[]1. Sao chép tệp lên đến
import OpenGL.GL as GL def drawWindowCallback[...]: xp.setGraphicsState[...] # So it's in a known state GL.glBegin[...] do_stuff[] GL.glEnd[]2 và khởi động lại X-Plane. Khi thành công, bạn sẽ thấy một cửa sổ động
Nếu bạn không nhìn thấy cửa sổ ngay lập tức, hãy kiểm tra nhật ký
/ └─── Resources/ └─── plugins/ ├─── XPPython3/ └─── PythonPlugins/ ├─── PI_OpenGL.py ❮══════╗ └─── samples/ ║ └─── PI_OpenGL.py ❯══╝
Ghi chú
Các phiên bản cũ hơn của python trên máy Mac có lỗi không tìm được thư viện OpenGL. Giải pháp tốt nhất là nâng cấp python lên ít nhất là phiên bản 3. 11. 0
Lập trình OpenGL
Tôi không phải là chuyên gia về OpenGL, vì vậy bạn tự làm. Điều quan trọng là bạn sẽ vẽ trong DrawCallback của cửa sổ ["cửa sổ" có thể trong suốt và không yêu cầu trang trí]. Sau đó, mỗi cuộc gọi bạn sẽ
import OpenGL.GL as GL def drawWindowCallback[...]: xp.setGraphicsState[...] # So it's in a known state GL.glBegin[...] do_stuff[] GL.glEnd[]
Gợi ý dành cho nhà phát triển
Bởi vì rất có thể người dùng plugin của bạn chưa cài đặt mô-đun pyopengl, nên bạn nên xác minh quá trình nhập của mình, thực hiện thao tác như
Trong hướng dẫn này, chúng ta sẽ học cách sử dụng thư viện PyOpenGL trong Python. OpenGL là một thư viện đồ họa được hỗ trợ bởi nhiều nền tảng bao gồm Windows, Linux và MacOS, đồng thời cũng có sẵn để sử dụng trong nhiều ngôn ngữ khác;
OpenGL, so với các thư viện đồ họa tương tự khác, khá đơn giản. Chúng ta sẽ bắt đầu với việc thiết lập nó trên hệ thống của mình, tiếp theo là viết một ví dụ đơn giản minh họa việc sử dụng thư viện
Cài đặt
Cách dễ nhất để cài đặt OpenGL bằng Python là thông qua trình quản lý gói pip. Nếu bạn đã cài đặt pip trong hệ thống của mình, hãy chạy lệnh sau để tải xuống và cài đặt OpenGL
$ pip install PyOpenGL PyOpenGL_accelerate
Tôi khuyên bạn nên sao chép lệnh trên để tránh lỗi chính tả
Khi lệnh này kết thúc thực thi, nếu quá trình cài đặt thành công, bạn sẽ nhận được đầu ra sau ở cuối
Successfully installed PyOpenGL-3.1.0 PyOpenGL-accelerate-3.1.0
Nếu điều này không hoạt động, bạn cũng có thể tải xuống thủ công. Đối với điều đó, liên kết này, cuộn xuống tiêu đề 'tải xuống và cài đặt' và tải xuống tất cả các tệp ở đó. Sau đó, điều hướng đến thư mục mà bạn đã tải xuống các tệp đó và chạy lệnh sau trong thiết bị đầu cuối hoặc dấu nhắc lệnh
$ python setup.py
Cần phải đề cập rằng bạn yêu cầu Visual C++ 14. 0 được cài đặt trên hệ thống của bạn để hoạt động với các thư viện OpenGL trong Python
Bây giờ chúng ta đã cài đặt thành công OpenGL trên hệ thống của mình, hãy bắt tay vào làm với nó
Bài tập mã hóa
Điều đầu tiên chúng ta cần làm để sử dụng OpenGL trong mã của mình là nhập nó. Để làm điều đó, hãy chạy lệnh sau
import OpenGL
Trước khi chúng tôi tiếp tục, có một vài thư viện khác mà bạn cần nhập bất cứ khi nào bạn định sử dụng thư viện này trong chương trình của mình. Dưới đây là mã cho những lần nhập
Bây giờ chúng ta đã hoàn thành các thao tác nhập cần thiết, trước tiên hãy tạo một cửa sổ trong đó đồ họa của chúng ta sẽ được hiển thị. Mã cho điều đó được đưa ra bên dưới, cùng với lời giải thích của nó trong các bình luận
Sao chép phần nhập ở trên, cũng như mã này trong một tệp python [. py] và thực thi nó. Bạn sẽ thấy một màn hình kích thước hình vuông màu trắng bật lên. Bây giờ, nếu chúng ta muốn vẽ bất kỳ hình dạng nào hoặc tạo bất kỳ loại đồ họa nào khác, chúng ta cần thực hiện điều đó trong chức năng "showScreen" của mình
Bây giờ chúng ta hãy thử tạo một hình vuông bằng OpenGL, nhưng trước khi thực hiện, chúng ta cần hiểu hệ tọa độ mà OpenGL tuân theo
Điểm [0,0] ở dưới cùng bên trái cửa sổ của bạn, nếu bạn đi lên từ đó, bạn sẽ di chuyển dọc theo trục y và nếu bạn đi từ đó sang phải, bạn sẽ di chuyển dọc theo trục x. Vì vậy, điểm trên cùng bên trái của cửa sổ của bạn sẽ là [0, 500], trên cùng bên phải sẽ là [500, 500], dưới cùng bên phải sẽ là [500, 0]
Ghi chú. Chúng tôi đang nói về cửa sổ mà chúng tôi đã tạo ở trên, có kích thước 500 x 500 trong ví dụ của chúng tôi chứ không phải toàn màn hình máy tính của bạn
Bây giờ chúng ta đã giải quyết được vấn đề đó, hãy viết mã một hình vuông. Lời giải thích cho mã có thể được tìm thấy trong các ý kiến
Chạy đoạn mã trên sẽ vẽ một hình vuông, nhưng hình vuông đó sẽ không hiển thị vì màu của nó sẽ giống với màu của cửa sổ, vì vậy chúng tôi cũng cần gán cho nó một màu khác, vì vậy chúng tôi sẽ thực hiện một số thay đổi trong . e. chức năng
import OpenGL.GL as GL def drawWindowCallback[...]: xp.setGraphicsState[...] # So it's in a known state GL.glBegin[...] do_stuff[] GL.glEnd[]3. Thêm dòng sau vào bên dưới câu lệnh
import OpenGL.GL as GL def drawWindowCallback[...]: xp.setGraphicsState[...] # So it's in a known state GL.glBegin[...] do_stuff[] GL.glEnd[]4 và bên trên câu lệnh
import OpenGL.GL as GL def drawWindowCallback[...]: xp.setGraphicsState[...] # So it's in a known state GL.glBegin[...] do_stuff[] GL.glEnd[]5
Tuy nhiên, mã của chúng tôi vẫn chưa hoàn thành. Những gì nó hiện đang làm là vẽ hình vuông một lần, sau đó xóa lại màn hình. chúng tôi không muốn điều đó. Trên thực tế, chúng ta thậm chí sẽ không thể phát hiện ra thời điểm nó thực sự vẽ hình vuông vì nó sẽ xuất hiện và biến mất trong tích tắc. Hãy viết một chức năng khác để tránh điều này
Gọi hàm lặp này trong "Phần 2" của mã ở trên. Thêm nó vào bên dưới
import OpenGL.GL as GL def drawWindowCallback[...]: xp.setGraphicsState[...] # So it's in a known state GL.glBegin[...] do_stuff[] GL.glEnd[]4 và bên trên câu lệnh
import OpenGL.GL as GL def drawWindowCallback[...]: xp.setGraphicsState[...] # So it's in a known state GL.glBegin[...] do_stuff[] GL.glEnd[]7 trong hàm
import OpenGL.GL as GL def drawWindowCallback[...]: xp.setGraphicsState[...] # So it's in a known state GL.glBegin[...] do_stuff[] GL.glEnd[]3
Hãy xem hướng dẫn thực hành, thực tế của chúng tôi để học Git, với các phương pháp hay nhất, tiêu chuẩn được ngành chấp nhận và bao gồm bảng gian lận. Dừng các lệnh Git trên Google và thực sự tìm hiểu nó
Bây giờ chúng ta hãy biên dịch tất cả những thứ này thành một tệp mã duy nhất để không có sự mơ hồ
from OpenGL.GL import *
from OpenGL.GLUT import *
from OpenGL.GLU import *
w,h= 500,500
def square[]:
glBegin[GL_QUADS]
glVertex2f[100, 100]
glVertex2f[200, 100]
glVertex2f[200, 200]
glVertex2f[100, 200]
glEnd[]
def iterate[]:
glViewport[0, 0, 500, 500]
glMatrixMode[GL_PROJECTION]
glLoadIdentity[]
glOrtho[0.0, 500, 0.0, 500, 0.0, 1.0]
glMatrixMode [GL_MODELVIEW]
glLoadIdentity[]
def showScreen[]:
glClear[GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT]
glLoadIdentity[]
iterate[]
glColor3f[1.0, 0.0, 3.0]
square[]
glutSwapBuffers[]
glutInit[]
glutInitDisplayMode[GLUT_RGBA]
glutInitWindowSize[500, 500]
glutInitWindowPosition[0, 0]
wind = glutCreateWindow["OpenGL Coding Practice"]
glutDisplayFunc[showScreen]
glutIdleFunc[showScreen]
glutMainLoop[]
Khi bạn chạy nó, một cửa sổ sẽ xuất hiện với một hộp vuông màu hồng trong đó
đầu ra
Phần kết luận
Trong hướng dẫn này, chúng ta đã tìm hiểu về OpenGL, cách tải xuống và cài đặt nó, tiếp theo là sử dụng nó trong một chương trình ví dụ ngắn. Trong ví dụ này, chúng ta cũng đã thực hành tạo một hình cơ bản bằng OpenGL, giúp chúng ta hiểu sâu hơn về một số lệnh gọi hàm phức tạp cần được thực hiện bất cứ khi nào chúng ta cần vẽ một thứ gì đó bằng thư viện này. Tóm lại, OpenGL rất hữu ích và ngày càng phức tạp hơn khi chúng ta tìm hiểu sâu hơn về nó