לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

לך אחורה   לובי הפורומים > מחשבים > תכנות ובניית אתרים
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
תגובה
 
כלי אשכול חפש באשכול זה



  #1  
ישן 12-09-2010, 17:51
  Dragonion Dragonion אינו מחובר  
 
חבר מתאריך: 22.08.08
הודעות: 310

עריכה: כרגיל פרש לא הצליח לסדר אנגלית ועברית ביחד...

מבחינת OpenGL הקוד הזה
קוד PHP:
 glBegin(whatever);
glVertex(...);
...
glVertex(...);
glEnd(); 

זהה לזה
קוד PHP:
 glBegin(whatever);
for (
int i 0somethingi++)
     
glVertex(...);
glEnd(); 

(כאשר glVertexהוא קריאה כלשהיא בין המגוון הרחב של האפשרויות).

זה לא ישנה שום מהירות אם תשחק איתם.

עכשיו לגבי הבעיה האמיתית שלך - glBegin ו glEnd הם ישנים, איטיים ובכלל deprecated מ OpenGL 3.

תשתמש בVertex Arrays, או בעדיפות בעיקר לאובייקטים בעלי מספר גדול של נקודות - Vertex Buffer Object (וזה מכיוון שבVBO המידע נשמר ישירות בזיכרון של הכרטיס מסך).
אם אתה סתם מצייר ריבועים, לדוגמא, אני מניח שVBO רק יאט, אבל לא עשיתי יותר מידי בדיקות אז אתה יכול לנסות.

דוגמא פשוטה לVertex Arrays שמציירת תקסטורה על ריבוע:
קוד PHP:
 // note that this uses a screen coordinate system, so y goes downwards instead of upwards
void renderQuad (float xfloat yfloat wfloat hGLuint texture)
{
    
float v[8];
    
float t[8] = {0.0f,1.0f0.0f,0.0f1.0f,0.0f1.0f,1.0f};

    
// left top corner
    
v[0] = x;
    
v[1] = y;
    
// left bottom corner
    
v[2] = x;
    
v[3] = h;
    
// right bottom corner
    
v[4] = w;
    
v[5] = h;
    
// right top corner
    
v[6] = w;
    
v[7] = y;

    
// enable GL client states
    
glEnableClientState(GL_VERTEX_ARRAY);
    
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
    
glEnable(GL_TEXTURE_2D);

    
// bind texture
    
glActiveTexture(GL_TEXTURE0+0);
    
glBindTexture(GL_TEXTURE_2Dtexture);

    
// set data pointers
    // each vertex/texcoord is a 2 dimentional vector of floats
    
glVertexPointer(2GL_FLOAT0v);
    
glTexCoordPointer(2GL_FLOAT0t);

    
// draw one quad using 4 vertices
    
glDrawArrays(GL_QUADS04);

    
// disable GL client states
    
glDisable(GL_TEXTURE_2D);
    
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
    
glDisableClientState(GL_VERTEX_ARRAY);


קח בחשבון שהראיתי רק דרך אחת לשימוש, יש אחרות.
מקום טוב להתחיל בו הוא האתר הזה
Vertex Arrays
Vertex Buffer Objects


נערך לאחרונה ע"י Dragonion בתאריך 12-09-2010 בשעה 17:59.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

מזער את תיבת המידע אפשרויות משלוח הודעות
אתה לא יכול לפתוח אשכולות חדשים
אתה לא יכול להגיב לאשכולות
אתה לא יכול לצרף קבצים
אתה לא יכול לערוך את ההודעות שלך

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 08:08

הדף נוצר ב 0.05 שניות עם 11 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר