मैं ओपनजीएल में पॉइंट स्प्राइट्स सेट करने की कोशिश कर रहा था ताकि बिलबोर्ड वाले स्प्राइट के रूप में दूरी के साथ आकार बदल सकें, लेकिन मुझे कुछ भी उपयोगी करने के लिए GL_POINT_DISTANCE_ATTENUATION_ARB
में मान नहीं मिल सकते हैं। क्या इस पर मूल्यों का एक सहसंबंध है जो किसी दिए गए प्रक्षेपण से मेल खाता है? क्या मैं भी संभव करने की कोशिश कर रहा हूं?क्या बिलबोर्ड sprites अनुकरण करने के लिए ओपनजीएल बिंदु sprites का उपयोग करना संभव है?
प्रस्तुत कोड इस्तेमाल किया जा रहा:
glPointParameterfARB = (PFNGLPOINTPARAMETERFARBPROC)wglGetProcAddress("glPointParameterfARB");
glPointParameterfvARB = (PFNGLPOINTPARAMETERFVARBPROC)wglGetProcAddress("glPointParameterfvARB");
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
gluPerspective(100.0, 800.0/600.0, 0.1, 10.0);
float quadratic[] = { 5.0f, 0.1f, 10.0f };
glPointParameterfvARB(GL_POINT_DISTANCE_ATTENUATION_ARB, quadratic);
float maxSize = 0.0f;
glGetFloatv(GL_POINT_SIZE_MAX_ARB, &maxSize);
if(maxSize > 100.0f) maxSize = 100.0f;
glPointSize(maxSize);
glPointParameterfARB(GL_POINT_FADE_THRESHOLD_SIZE_ARB, 0.1f);
glPointParameterfARB(GL_POINT_SIZE_MIN_ARB, 0.1f);
glPointParameterfARB(GL_POINT_SIZE_MAX_ARB, maxSize);
glTexEnvf(GL_POINT_SPRITE_ARB, GL_COORD_REPLACE_ARB, GL_TRUE);
glEnable(GL_POINT_SPRITE_ARB);
glScalef(0.75,1,1);
glTranslatef(0.00,0.0,-1.0);
glScalef(0.5,0.5,0.5);
glRotatef(counter*0.1+0.5,1.0,1.0,0.0);
glBegin(GL_POINTS);
for(int i = 0; i < 100; ++i)
{
glColor4f(i%10*0.1, i/10*0.1, 0.5, 1.0f);
glVertex3f(i%10*0.2-1.0,i/10*0.2-1.0,
((i%10-5)*(i%10-5)+(i/10-5)*(i/10-5))*0.01);
}
glEnd();
glDisable(GL_POINT_SPRITE_ARB);