Sorunuzu yanıtlarken sorunun bir kısmı eksik olan çok şey var ve çoğu zaman nadiren kullanılan veya uygulanamayan bit bayrakları kümesidir. Farklılıkları açıklayan en iyi belge, aslında uygulama başlığıdır.
Üzerinde çalıştığım çerçeve için masaüstü ve iPhone arasında tamamen çapraz bir platform oluşturmaya karar verdim. Anladığım kadarıyla yaklaştığım yaklaşım OpenGL'de kod yazıyor ve nerede kırıldığını görüyor. Sonra
/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.2.sdk/ System/Library/Frameworks/OpenGLES.framework/Headers/ES1/gl.h
bakmak ve bu başlıklar çok basit ve takip edilmesi kolay olan
/Developer/SDKs/MacOSX10.5.sdk/ System/Library/Frameworks/OpenGL.framework/Versions/A/Headers/gl.h
karşılaştırın. Şimdiye kadar keşfettiğim en önemli fark GLdouble olmadığıdır (glOrtho ve glFrustum gibi GLdouble kullanan bir GLFloat versiyonu glOrthof ve glFrustumf vardır). Ayrıca, herhangi bir nedenle gluPerspective veya gluPerspectivef yoktur. Eğer hiçbir glBegin ve glEnd sahip olduğundan, glDrawArray veya glDrawElements (tercih) aracılığıyla her şeyi yapmak zorunda
void gluPerspective(GLfloat fovy, GLfloat aspect, GLfloat zNear, GLfloat zFar)
{
GLfloat xmin, xmax, ymin, ymax;
ymax = zNear * tan(fovy * M_PI/360.0);
ymin = -ymax;
xmin = ymin * aspect;
xmax = ymax * aspect;
glFrustumf(xmin, xmax, ymin, ymax, zNear, zFar);
}
: Burada
yerine bir damladır. Hızlı ve kirli örnek:
void draw(short x, short y, short w, short h)
{
const GLshort t[8] = { 0, 0, 1, 0, 1, 1, 0, 1 };
const GLshort v[8] = { x, y, x+w, y, x+w, y+h, x, y+h };
glVertexPointer(2, GL_SHORT, 0, v);
glEnableClientState(GL_VERTEX_ARRAY);
glTexCoordPointer(2, GL_SHORT, 0, t);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glDrawArrays(GL_TRIANGLE_FAN, 0, 4);
}
Kontrol dışarı taşıma yaralı olabilecek diğer bazı ipuçları için Apple'ın Teknik Not TN2230 "Optimizing OpenGL ES for iPhone OS".
Şu ana kadar benim için oldukça rahatsız edici bir durum oldu ve uygulamanız oldukça ileri düzeyde OGL işleri yapmıyorsa veya tamamen desteklenmeyen işlevler kullanmıyorsa, derleme düğmesine basarak sorunlarınızı bulabilir ve basit bir düzeltme kazma yoluyla görünür olacaktır gl.h dosyalarında biraz. Aslında, iyi bir hale getirilmiş işleme kodu yazmanız için ES tür kuvvetlerine başvurmak.
Tamam, işe yarıyor. Üzgünüz, ES için yeni ve Khronos sitesini bulamadı soruyu yayınlayana kadar (d'oh!) – Olie