2013-01-24 29 views
6

Tôi đang cố gắng để áp dụng một kết cấu cho một mảng đỉnh whit đoạn mã sau:OpenGL, kết cấu có luôn luôn giống nhau kích thước

glEnable(GL_TEXTURE_2D); 
glBindTexture(GL_TEXTURE_2D, texture); 
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); 

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); 
glColor3f(1.0f, 1.0f, 1.0f); 

glEnableClientState(GL_TEXTURE_COORD_ARRAY); 
glEnableClientState(GL_VERTEX_ARRAY); 
glTexCoordPointer(2, GL_FLOAT, 0, texcoords); 
glVertexPointer(3, GL_FLOAT, 0, vertices); 
glDrawElements(GL_QUADS, 12, GL_UNSIGNED_BYTE, faceIndices); 
glDisableClientState(GL_VERTEX_ARRAY); 
glDisableClientState(GL_COLOR_ARRAY); 

glDisable(GL_TEXTURE_2D); 

với kết cấu này: texture

vì vậy tôi có kết quả này : Result

Bây giờ tôi tự hỏi làm thế nào tôi có thể mở rộng kết cấu sàn, tôi đã cố gắng mở rộng kết cấu bằng photoshop, nhưng kết quả thì giống nhau nhưng nặng hơn.

Trả lời

2

Điều đó phụ thuộc vào kết cấu của bạn sẽ điều chỉnh cách bạn muốn ánh xạ họa tiết. Hãy lấy một ví dụ, nó bao gồm toàn bộ đa giác

glTexCoord2f(0.0f, 0.0f); 
glTexCoord2f(1.0f, 0.0f); 
glTexCoord2f(1.0f, 1.0f); 
glTexCoord2f(0.0f, 1.0f); 

Bây giờ nếu bạn muốn lặp lại kết cấu gấp năm lần sau đó cung cấp tọa độ như `

glTexCoord2f(0.0f, 0.0f); 
glTexCoord2f(5.0f, 0.0f); 
glTexCoord2f(5.0f, 5.0f); 
glTexCoord2f(0.0f, 5.0f);` 

Giống như ví dụ trên thay đổi giá trị như thế nào bạn muốn ánh xạ Kết cấu.

+2

cảm ơn bạn: D, đây là câu trả lời đúng. – Luca

7

Tôi giả sử bạn có nghĩa là bạn muốn kết cấu để gạch ít hơn hoặc xếp nhiều hơn. Trong trường hợp này, thay đổi tọa độ kết cấu của bạn, chứ không phải kết cấu (ví dụ: bất kỳ dữ liệu nào nằm trong số texcoords).

Ngoài ra, kết cấu ví dụ của bạn có màu xanh, nhưng có màu nâu trong hình ảnh được hiển thị. Bạn có thể đang trao đổi các kênh R + B khi tải.

+2

cũng cảm ơn bạn đã gợi ý kênh trao đổi, tôi thậm chí không nhận thấy :) – Luca

Các vấn đề liên quan