2010-04-27 45 views
8

Tôi gặp phải sự cố rất, rất lạ trong ứng dụng C++ OpenGL của mình.Kết quả OpenGL ngẫu nhiên không được hiển thị

tôi chỉ đơn giản tải một kết cấu và áp dụng nó vào một bậc hai:

glGenTextures(1, &tex); 
glBindTexture(GL_TEXTURE_2D, tex); 
glTexImage2D(GL_TEXTURE_2D, 0, 3, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, image); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); 

Sau đó

glEnable(GL_TEXTURE_2D); 
glBindTexture(GL_TEXTURE_2D, tex); 
gluQuadricDrawStyle(quad,GLU_FILL); 
gluQuadricTexture(quad,GL_TRUE); 
gluCylinder(quad,1,0,2,20,1); 
glDisable(GL_TEXTURE_2D); 

Bây giờ là: nó hoạt động hoàn hảo 9 lần trong số mười, nhưng đôi khi các kết cấu không được hiển thị (quadric vẫn trắng).

image được tải chính xác, do đó sự cố phải xảy ra với OpenGL. Tôi đã thử với một số hình ảnh khác nhau quá. Luôn luôn GL_NO_ERROR.

Bất kỳ ý tưởng nào? Điều đó khiến tôi phát điên ...

+0

Ngớ ngẩn nhưng vào những thời điểm không tải, nếu bạn thu nhỏ tối đa, hãy xuất hiện? – Robb

+0

Không, nó không tải, ngay cả khi tôi thu nhỏ/tối đa hóa. – TheDude

+3

Bạn có thể thử nghiệm trên một máy tính khác hoặc với các trình điều khiển khác nhau không? –

Trả lời

2

Found :) It w thành viên GLint texture không được phân bổ lại chính xác trong trình tạo bản sao.

Tuy nhiên, tôi vẫn không hiểu tại sao đôi khi lại hoạt động ...

1

Mã bạn đang sử dụng có vẻ hợp lệ. Có bạn ...

  • cố gắng sử dụng một quad đơn giản thay vì bậc hai
  • yên tâm rằng image được điền một cách chính xác
  • xác minh rằng tex không bị thay đổi ở một nơi khác
  • yên tâm rằng không có chương trình khác sử dụng opengl cùng một lúc
  • khởi động lại máy tính của bạn;)
Các vấn đề liên quan