opengl 点精灵的使用

来源:互联网 发布:js获取项目相对路径 编辑:程序博客网 时间:2024/05/16 12:16
1、导入glext动态链接库中的函数
#include <gl\glext.h>PFNGLPOINTPARAMETERFARBPROC glPointParameterfARB = NULL;PFNGLPOINTPARAMETERFVARBPROC glPointParameterfvARB = NULL;char* ext = (char*) glGetString(GL_EXTENSIONS);if(strstr(ext, "GL_ARB_point_parameters") == NULL){MessageBox(NULL, "GL_ARB_point_parameters EXTENSION CAN'T BE FOUND", ERROR, MB_OK|MB_ICONEXCLAMATION);exit(0);}else{glPointParameterfARB = (PFNGLPOINTPARAMETERFARBPROC)wglGetProcAddress("glPointParameterfARB");glPointParameterfvARB = (PFNGLPOINTPARAMETERFVARBPROC)wglGetProcAddress("glPointParameterfvARB");if(!glPointParameterfARB || !glPointParameterfvARB){MessageBox(NULL,"一个或多个 GL_ARB_point_parameters 函数没有找到","ERROR",MB_OK|MB_ICONEXCLAMATION);exit(0);}}

2、设置属性

 

glEnable(GL_TEXTURE_2D);float quadratic[] = {1.0, 0, 0, 1.0};glEnable(GL_BLEND);glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);//在使用电参数时,我们需要的是圆点而不是方块点,因此需要启用抗锯齿功能,这就是完成这个任务glDisable(GL_DEPTH_TEST);glEnable(GL_POINT_SPRITE);glPointParameterfvARB(GL_POINT_DISTANCE_ATTENUATION_ARB, quadratic);glPointParameterfARB(GL_POINT_FADE_THRESHOLD_SIZE_ARB,  10.0f);glTexEnvf(GL_POINT_SPRITE_ARB, GL_COORD_REPLACE_ARB, GL_TRUE);glPointParameterfARB(GL_POINT_SIZE_MIN_ARB, m_ParticleSize);glTexEnvi(GL_POINT_SPRITE, GL_COORD_REPLACE, GL_TRUE);glPointParameteri(GL_POINT_SPRITE_COORD_ORIGIN, GL_LOWER_LEFT);

3、画点使用

 

glBegin(GL_POINTS);DrawParticles(pParticles, len);glEnd();



 

 


 

 

原创粉丝点击