Untitled
unknown
plain_text
a year ago
3.6 kB
5
Indexable
from OpenGL.GL import * from OpenGL.GLUT import * from OpenGL.GLU import * from PIL import Image import pygame import sys # Положение фигур по оси Y cone_y = 0.0 cube_y = 0.0 cylinder_y = 0.0 texture_id = None def load_texture(filename): img = Image.open(filename) img_data = img.tobytes() width, height = img.size global texture_id texture_id = glGenTextures(1) # Генерируем идентификатор текстурного объекта glBindTexture(GL_TEXTURE_2D, texture_id) # Привязываем текстурный объект glTexParameter(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR) glTexParameter(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR) glTexParameter(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT) glTexParameter(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT) glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, img_data) def draw_cube(): glPushMatrix() glTranslatef(0, cube_y, 0) glScalef(2.0, 2.0, 2.0) glEnable(GL_TEXTURE_2D) glBindTexture(GL_TEXTURE_2D, texture_id) # Привязываем текстурный объект set_material() # Установка свойств материала для куба glBegin(GL_QUADS) # Грань 1 glTexCoord2f(0.0, 0.0) glVertex3f(-1, -1, -1) glTexCoord2f(1.0, 0.0) glVertex3f(1, -1, -1) glTexCoord2f(1.0, 1.0) glVertex3f(1, 1, -1) glTexCoord2f(0.0, 1.0) glVertex3f(-1, 1, -1) # Грань 2 glTexCoord2f(0.0, 0.0) glVertex3f(1, -1, -1) glTexCoord2f(1.0, 0.0) glVertex3f(1, -1, 1) glTexCoord2f(1.0, 1.0) glVertex3f(1, 1, 1) glTexCoord2f(0.0, 1.0) glVertex3f(1, 1, -1) # Грань 3 glTexCoord2f(0.0, 0.0) glVertex3f(1, -1, 1) glTexCoord2f(1.0, 0.0) glVertex3f(-1, -1, 1) glTexCoord2f(1.0, 1.0) glVertex3f(-1, 1, 1) glTexCoord2f(0.0, 1.0) glVertex3f(1, 1, 1) # Грань 4 glTexCoord2f(0.0, 0.0) glVertex3f(-1, -1, 1) glTexCoord2f(1.0, 0.0) glVertex3f(-1, -1, -1) glTexCoord2f(1.0, 1.0) glVertex3f(-1, 1, -1) glTexCoord2f(0.0, 1.0) glVertex3f(-1, 1, 1) # Грань 5 glTexCoord2f(0.0, 0.0) glVertex3f(-1, 1, -1) glTexCoord2f(1.0, 0.0) glVertex3f(1, 1, -1) glTexCoord2f(1.0, 1.0) glVertex3f(1, 1, 1) glTexCoord2f(0.0, 1.0) glVertex3f(-1, 1, 1) # Грань 6 glTexCoord2f(0.0, 0.0) glVertex3f(-1, -1, 1) glTexCoord2f(1.0, 0.0) glVertex3f(1, -1, 1) glTexCoord2f(1.0, 1.0) glVertex3f(1, -1, -1) glTexCoord2f(0.0, 1.0) glVertex3f(-1, -1, -1) glEnd() glDisable(GL_TEXTURE_2D) glPopMatrix() def set_material(): mat_ambient = (0.2, 0.2, 0.2, 1.0) mat_diffuse = (0.8, 0.8, 0.8, 1.0) mat_specular = (0.0, 0.0, 0.0, 1.0) mat_shininess = 0.0 # Матовое покрытие glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient) glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse) glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular) glMaterialf(GL_FRONT, GL_SHININESS, mat_shininess) def main(): pygame.init() display = (800, 800) pygame.display.set_mode(display, pygame.DOUBLEBUF | pygame.OPENGL) while True: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() quit() glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) load_texture("/home/bersiv/Labs/CG/images.jpg") draw_cube() pygame.display.flip() pygame.time.wait(10) main()
Editor is loading...