2012-10-08 5 views
1

OpenGL 함수를 사용하여 텍스처를 pyglet의 쿼드에 매핑하려하지만 쿼드는 그냥 흰색으로 표시됩니다.텍스처를 Quad OpenGL 및 Pyglet에 매핑하기

내 코드는 다음과 같습니다

import pyglet 
from pyglet.gl import * 

glEnable(GL_TEXTURE_2D) 
image = pyglet.image.load("redbrick.png") 
texture = image.get_texture() 

내 그리기 기능 :

def on_draw(): 
    window.clear() 

    glBindTexture (GL_TEXTURE_2D, 13) 
    glBegin (GL_QUADS); 
    glTexCoord2i (0, 0) 
    glVertex2i (0, 0) 
    glTexCoord2i (1, 0) 
    glVertex2i (100, 0) 
    glTexCoord2i (1, 1) 
    glVertex2i (100, 100) 
    glTexCoord2i (0, 1) 
    glVertex2i (0, 100) 
    glEnd() 

내가 잘못하고 또는 그것을 밖으로 실종 뭔가 거기에 흰색 쿼드로 그려 질?

답변

3

몇 가지 잘못된 정보가 있습니다. 풀 코드를 페이스트 인처럼 쓰는 것이 좋겠지 만 질문 할 수는 없습니다 ...

텍스처를 OpenGL 텍스처로 만들어야합니다. 먼저 이미지를 원시 데이터 형식으로 변환해야합니다. 이미지를로드 할 때 아래의 한 줄로 압축 된 image.get_data()를 수행하십시오. 이것은 가장 효율적인 방법은 아니지만 간단한 예입니다.

이후 텍스처 집합 도면 매개 변수를 바인딩합니다.

그런 다음 데이터를 glTexImage2D의 비디오 카드로 가져옵니다.

data=pyglet.image.load("redbrick.png").get_data() 
texture_id = glGenTextures(1) 
glBindTexture(GL_TEXTURE_2D, texture_id) 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR) 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR) 
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, (image_width), (image_height), 0, GL_RGBA, GL_UNSIGNED_BYTE, data) 

그런 다음 texture_id로 바인딩하면이 텍스처를 사용할 수 있습니다. 13 내가 볼 수있는 모든 것에는 아무것도 될 수 없습니다. 모든 코드를 제공하면 아마도 수정할 수 있습니다.

+0

좋은 답변을 보내 주셔서 감사합니다. 정말 도움이됩니다. 전체 코드는 다음과 같습니다. http://pastebin.com/naw7wXs5 (변경하기 전) – user1237200

+0

get_data()는 2 개의 인수를 취합니다./그 코드에는 무엇을 사용합니까? – user1237200

+0

지금 정렬되어 있지만 glBindTexture (GL_TEXTURE_2D, texture_id) 줄에 "잘못된 형식"오류가 나타납니다. 지금이 모양 같습니다 : http://pastebin.com/djCM8vvn – user1237200

관련 문제