Tam Sürümünü Görmek İçin : (opengl) begin end arası Loadmatrix
oyun programlama ile ilgili bir bölüm olmadığı için buraya yazıyorum.
opengl'de bir poligonun (mesela) ilk iki köşesini bir modelview matrisde üçüncü köşesini başka bir modelview matrisde çizmek istiyorum.
glBegin(gl_polygon)
glVertex3f(0,0,1)
glVertex3f(0,0,1)
glLoadMatrixf(matrx)
glVertex3f(0,0,1)
glEnd()
yazdığımda ilk iki köşe için geçerli olan modelview matris değişmiyor. loadmatrix, begin end arası çalışmıyor anladığım kadarıyla.
bunun bir yolu var mı?
redbook appendix G :
OpenGL 1.1 ignores matrix operations invoked between
glBegin() and glEnd() commands, but a future version might not
bluebook ( hangi versiyodan bahsediyor bilmiyorum ) :
http://www.rush3d.com/reference/opengl-bluebook-1.0/ch05.html#id5450783
Only a subset of GL commands can be used between glBegin and glEnd. The commands are glVertex, glColor, glIndex, glNormal, glTexCoord, glEvalCoord, glEvalPoint, glMaterial, and glEdgeFlag. Also, it is acceptable to use glCallList or glCallLists to execute display lists that include only the preceding commands. If any other GL command is called between glBegin and glEnd, the error flag is set and the command is ignored.
bence error flag ı test edebilirsin.
http://www.rush3d.com/reference/opengl-bluebook-1.0/ch05.html#id5488181
glGetError() fonksiyonu,
yukarıdaki durum hala bir hata ise GL_INVALID_OPERATION döndürmeli.
değer glGetError ile bir kez okunduktan sonra temizleniyor.
teşekkürler tam olarak buydu aradığım.
jogl kullanıyorum. O sanırım, opengl 2.0 ı destekliyor.
geterror yöntemini öğrettiğin için çok sağol, dediğin gibi invalid operation döndürüyor.
başka yerlerde de invalid operation yapıyormuşum :).
jogl kütüphanesini inceledim.
glGetError dan çok daha pratik bir yöntem var.
GL yerine DebugGL nesnesini kullanırsan,
her opengl çağrısından sonra hata olup olmadığını kontrol ediyor.
ve hata var ise hatanın nedenini içeren bir GLException fırlatıyor.
( yakalamak zorunda değilsin. )
init fonksiyonu içerisinde şu satır olmalı:
public void init(GLAutoDrawable drawable) {
drawable.setGL(new DebugGL(drawable.getGL()));
//...
Forum Yazılımı : vBulletin v3.6.8, Copyright ©2000-2008, Jelsoft Enterprises Ltd.