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

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



  #1  
ישן 11-09-2010, 01:01
  macox macox אינו מחובר  
 
חבר מתאריך: 01.07.03
הודעות: 2,466
שלח הודעה דרך ICQ אל macox שלח הודעה דרך MSN אל macox
GLcallList ומה שבינהם

לילה / ערב טוב

הינני מעוניין לצייר מספר רב של אוביקטים תחת OPENGL , הבעיה היא שאחרי מספר כלשהו של אוביקטים המחשב כמעט וקורס תחת העומס של הציור...

קראתי קצת לגבי עניין כל ה LISTS ושזה בעצם מייצר רינדור של מה שאני רוצה לצייר לפני הציור הראשוני של התוכנית ופשוט בזמן הציור עצמו לקרוא לרשימות הנ"ל ,

העניין הוא שתמיד ראיתי דוגמאות של יצירת רשימות כאלו :
קוד:
glNewList(index, GL_COMPILE); glBegin(GL_TRIANGLES); glVertex3fv(v0); glVertex3fv(v1); glVertex3fv(v2); glEnd(); glEndList();


אבל מה קורה כשאני רוצה לצייר בצורה הבאה :

קוד:
for(i=0;i<100;i++) glvertex3d(i,i,i)

איך אני יוצר רשימה על הדבר הזה? במידה ובכל זאת ניתן לעטוף את קטע הקוד האחרון ב glNewList
יהיה בעצם שיפור כולשהו ב FPS?


תודה לעונים
_____________________________________
_

אני הלוחם של היום והלויס ליין של המחר

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #2  
ישן 12-09-2010, 17:51
  Dragonion Dragonion אינו מחובר  
 
חבר מתאריך: 22.08.08
הודעות: 310
בתגובה להודעה מספר 1 שנכתבה על ידי macox שמתחילה ב "GLcallList ומה שבינהם"

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

מבחינת 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. השעה כעת היא 07:23

הדף נוצר ב 0.06 שניות עם 12 שאילתות

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

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