संपादित करें: रोटोग्लुप को मेरे कोड में समस्याएं मिलीं, जिससे मैंने हटाए गए शेडर्स को हल किया। सही कोड (शेडर्स के साथ) के लिए नीचे मेरा उत्तर देखें।मूल ओपनजीएल, वर्टेक्स बफर और पायगलेट
हाय सब!
मैं this tutorial से आधुनिक ओपनजीएल की कुछ मूल बातें सीखने की कोशिश कर रहा हूं।
हालांकि मैं इसे C++ के बजाय पायथन/पायगलेट के साथ करना चाहता हूं। मुझे पता है कि पिगलेट कम स्तर के ओपनजीएल दूर अमूर्त कर सकते हैं; हालांकि मैं अमूर्तता की परतों के पीछे छिपाने के लिए आगे बढ़ने से पहले कुछ मूल बातें समझना चाहता हूं।
मेरी समस्या बेहद सरल है: नीचे दिया गया कोड केवल 3 की बजाय एक बिंदु खींचता है। मेरा कोड है, जहां तक मैं कह सकता हूं, ट्यूटोरियल में सी ++ के समान, वर्टेक्स और खंड शेडर्स को हटाने के अलावा (के माध्यम से पाइथन में किया गया), जो मेरी समस्या में कोई फर्क नहीं पड़ता है।
चीजों को एक ही बिंदु पर सरलीकृत करना व्यवहार को दिखाता है जो मुझे समझ में नहीं आता है (पहला समन्वय केवल एक ही प्रभावशाली प्रतीत होता है जो मुझे प्रभावित करता है), जिससे मुझे मेरी धारणा का सामना करना पड़ता है कि मैं बस कुछ भी मूलभूत समझने में असफल रहा हूं pyglet, ओपन, या यहाँ तक कि 3 डी सामान्य रूप में: p
यहाँ प्रासंगिक कोड है:
import pyglet
from pyglet.gl import *
window = pyglet.window.Window()
positionBufferObject = GLuint()
vao = GLuint()
vertexPositions = [0.0, 0.0, 0.0,
0.25, 0.0, 0.0,
1.75, 1.75, 0.0]
vertexPositionsGl = (GLfloat * len(vertexPositions))(*vertexPositions)
@window.event
def on_draw():
glBindBuffer(GL_ARRAY_BUFFER, positionBufferObject)
glEnableVertexAttribArray(0)
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, 0)
glDrawArrays(GL_POINTS, 0, 3)
glDisableVertexAttribArray(0)
glGenBuffers(1, positionBufferObject)
glBindBuffer(GL_ARRAY_BUFFER, positionBufferObject)
glBufferData(GL_ARRAY_BUFFER, len(vertexPositionsGl)*4, vertexPositionsGl, GL_STATIC_DRAW)
glBindBuffer(GL_ARRAY_BUFFER, 0)
glClearColor(0.0, 0.0, 0.0, 0.0)
pyglet.app.run()
आपका मतलब है कि सही कोड के साथ, आपके पास अभी भी एक बिंदु खींचा गया है? क्या यह बिंदु स्क्रीन के बीच में खींचा गया है? यदि आप पहले निर्देशांक बदलते हैं, तो क्या बिंदु बढ़ता है? – rotoglup
सही कोड के साथ, मुझे जो भी मिलता है वह अभी भी एक बिंदु है जो डब्ल्यू समन्वय के साथ 1 पर और बाइट्स में आकार को पार करके नहीं चलता है। यदि मैं डब्ल्यू समन्वय को हटा देता हूं और तदनुसार glVertexAttribPointer बदलता हूं, तो मुझे कुछ भी नहीं मिलता है। मैं पूरी तरह उलझन में हूँ! –
सुधार: कुछ दिखाने के लिए डब्ल्यू 0 पर होना चाहिए, जो केवल मुझे और अधिक उलझन में डाल देता है। –