PySDL3 Desktop: OpenGL Setup PySDL3 для Desktop: Настройка OpenGL
A guide to integrating OpenGL with SDL3 applications in Python. Руководство по интеграции OpenGL в приложения SDL3 на языке Python.
1. Installation 1. Установка
Ensure you have Python installed. Install PySDL3 and PyOpenGL using pip:
Убедитесь, что у вас установлен Python. Установите PySDL3 и PyOpenGL через pip:
pip install PySDL3 PyOpenGL
2. Project Structure 2. Структура проекта
pysdl3-opengl-app/
└── main.py
3. Source Code (OpenGL Integration) 3. Исходный код (Интеграция OpenGL)
Copy this code into main.py. This setup initializes an OpenGL context within an SDL3 window using the callback architecture.
Скопируйте этот код в файл main.py. Этот пример инициализирует контекст OpenGL внутри окна SDL3, используя архитектуру обратных вызовов.
import ctypes
import os
import OpenGL.GL as gl
# Required for the SDL3 Callback-based App framework
os.environ["SDL_MAIN_USE_CALLBACKS"] = "1"
os.environ["SDL_RENDER_DRIVER"] = "opengl"
import sdl3
glContext = None
window = None
@sdl3.SDL_AppInit_func
def SDL_AppInit(appstate, argc, argv):
global glContext
global window
if not sdl3.SDL_Init(sdl3.SDL_INIT_VIDEO):
sdl3.SDL_Log("Couldn't initialize SDL: %s".encode() % sdl3.SDL_GetError())
return sdl3.SDL_APP_FAILURE
# Configure OpenGL attributes
sdl3.SDL_GL_SetAttribute(sdl3.SDL_GL_MULTISAMPLEBUFFERS, 1)
sdl3.SDL_GL_SetAttribute(sdl3.SDL_GL_MULTISAMPLESAMPLES, 2)
windowTitle = "PySDL3, OpenGL".encode()
window = sdl3.SDL_CreateWindow(windowTitle, 350, 350, sdl3.SDL_WINDOW_OPENGL)
if not window:
sdl3.SDL_Log("Couldn't create a window: %s".encode() % sdl3.SDL_GetError())
return sdl3.SDL_APP_FAILURE
# Create an OpenGL context
glContext = sdl3.SDL_GL_CreateContext(window)
if not glContext:
sdl3.SDL_Log("Couldn't create a glContext: %s".encode() % sdl3.SDL_GetError())
return sdl3.SDL_APP_FAILURE
sdl3.SDL_GL_SetSwapInterval(1) # Turn on vertical sync
return sdl3.SDL_APP_CONTINUE
@sdl3.SDL_AppEvent_func
def SDL_AppEvent(appstate, event):
if sdl3.SDL_DEREFERENCE(event).type == sdl3.SDL_EVENT_QUIT:
return sdl3.SDL_APP_SUCCESS
return sdl3.SDL_APP_CONTINUE
@sdl3.SDL_AppIterate_func
def SDL_AppIterate(appstate):
gl.glClearColor(0.2, 0.2, 0.2, 1)
gl.glClear(gl.GL_COLOR_BUFFER_BIT)
sdl3.SDL_GL_SwapWindow(window)
return sdl3.SDL_APP_CONTINUE
@sdl3.SDL_AppQuit_func
def SDL_AppQuit(appstate, result):
global glContext
sdl3.SDL_GL_DestroyContext(glContext)
sdl3.SDL_Quit()
4. Running the Application 4. Запуск приложения
Run the script via your terminal:
Запустите скрипт через терминал:
python main.py
or:
или:
py main.py
Support My Work Поддержать проект
If these tutorials helped you, consider buying me a coffee! Если эти туториалы вам помогли, вы можете поддержать автора.
Sberbank (Russia only) Сбербанк (только для РФ)
Direct transfer via phone number (Russia only) Перевод по номеру телефона (только для РФ)
USDT TRC20
Support via Cryptocurrency Поддержка криптовалютой