PyOpenGL: glEnd выдает недопустимую операцию (ошибка 1282)Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 PyOpenGL: glEnd выдает недопустимую операцию (ошибка 1282)

Сообщение Anonymous »

Эта программа должна нарисовать простую геометрию, используя PyOpenGL и устаревший интерфейс OpenGL, но вместо этого выдает ошибку. Я не понимаю, как это должно конфликтовать с API OpenGL. Вот код:
import sys
sys.path.append("..\Blocks")
print sys.path
import pygame
from pygame.locals import *
from OpenGL.GL import *
from OpenGL.GLU import *

import random

try:
import BlockModel
except:
print("Cant Find Block Model")

def createBlock():
block = BlockModel.Block()

blockVertices = block.returnVertices()

blockEdges = block.returnEdges()

blockSurface = block.returnSurface()

glBegin(GL_QUADS)

for surface in blockSurface:
for faceVertex in surface:
glVertex3fv(blockVertices[faceVertex])

glEnd

glBegin(GL_LINES)
for edge in blockEdges:
for vertex in edge:
glVertex3fv(blockVertices[vertex])
glEnd()

def main():
pygame.init()
display = (800, 600)
pygame.display.set_mode(display, DOUBLEBUF|OPENGL)
gluPerspective(15, (display[0]/display[1]), 0.1, 50.0)

glTranslatef(random.randrange(-5,5),random.randrange(-5,5), -40)

exit = False

while not exit:
pygame.time.wait(10)
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT)
createBlock()
pygame.display.flip()
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()

main()

Я получаю эту ошибку при попытке запустить программу:
C:\Users\Haavard\Desktop\MinecraftPythonProject\framework>python main.py
['C:\\Users\\Haavard\\Desktop\\MinecraftPythonProject\\framework', 'C:\\Windows\
\system32\\python27.zip', 'C:\\Python27\\DLLs', 'C:\\Python27\\lib', 'C:\\Python
27\\lib\\plat-win', 'C:\\Python27\\lib\\lib-tk', 'C:\\Python27', 'C:\\Python27\\
lib\\site-packages', 'C:\\Python27\\lib\\site-packages\\PIL', '..\\Blocks']
Traceback (most recent call last):
File "main.py", line 60, in
main()
File "main.py", line 52, in main
createBlock()
File "main.py", line 37, in createBlock
glEnd()
File "latebind.pyx", line 44, in OpenGL_accelerate.latebind.Curry.__call__ (c:
\Users\mcfletch\OpenGL-dev\OpenGL-ctypes\OpenGL_accelerate\src\latebind.c:1201)
File "C:\Python27\lib\site-packages\OpenGL\GL\exceptional.py", line 46, in glE
nd
return baseFunction( )
File "C:\Python27\lib\site-packages\OpenGL\platform\baseplatform.py", line 402
, in __call__
return self( *args, **named )
File "errorchecker.pyx", line 53, in OpenGL_accelerate.errorchecker._ErrorChec
ker.glCheckError (c:\Users\mcfletch\OpenGL-dev\OpenGL-ctypes\OpenGL_accelerate\s
rc\errorchecker.c:1218)
OpenGL.error.GLError: GLError(
err = 1282,
description = 'invalid operation',
baseOperation = glEnd,
cArguments = ()
)

Я использую Windows 7 на компьютере HP.
Модуль блочной модели выглядит следующим образом:
< pre class="lang-py Prettyprint-override">class Block:

# initializing the basic functions of a block
def __init__(self, blockID = "0", blockType = "stone", verticesCords = ((1,-1,-1),(1,1,-1),(-1,1,-1),(-1,-1,-1),(1,-1,1),(1,1,1),(-1,-1,1),(-1,1,1)), edges = ((0,1),(0,3),(0,4),(2,1),(2,3),(2,7),(6,3),(6,4),(6,7),(5,1),(5,4),(5,7)), surfaces = (((0,1,2,3),(3,2,7,6),(6,7,5,4),(4,5,1,0),(1,5,7,2),(4,0,3,6)))):
# Block Placement
self.PLACEMENT = verticesCords
# Block identity in the world
self.EDGES = edges
self.SURFACE = surfaces
self.BLOCKID = blockID
# The block type
self.BLOCKTYPE = blockType

# A function letting the framework know its placement.
def returnVertices(self):
return self.PLACEMENT

def returnEdges(self):
return self.EDGES

def returnSurface(self):
return self.SURFACE

# A function to make the block fetch its own texture.
def defineTexture():
pass


Подробнее здесь: https://stackoverflow.com/questions/312 ... error-1282
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • PyOpenGL - вызов glEnd дает ошибку OpenGL 1282
    Anonymous » » в форуме Python
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • PyOpenGL - вызов glEnd дает ошибку OpenGL 1282
    Anonymous » » в форуме Python
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • PyOpenGL - вызов glEnd дает ошибку OpenGL 1282
    Anonymous » » в форуме Python
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • PyOpenGL - вызов glEnd дает ошибку OpenGL 1282 после изменения импорта
    Anonymous » » в форуме Python
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Бесшовные текстуры Opengl — нарушение прав доступа и ошибка 1282 при связывании программ [закрыто]
    Anonymous » » в форуме C++
    0 Ответы
    34 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»