2 glBlendEquation是OpenGL扩展部分的函数。解决方法是安装OpenGL的glew扩展库。
我的编译环境:VS2008。
首先下载glew库:http://glew.sourceforge.net/ 然后进行安装:
拷贝glew32.dll至system32文件夹下,拷贝glew32.lib至VC目录下lib文件夹,拷贝glew.h和wglew.h至VC目录下include/GL目录下。
在程序开始要导入头文件:#include \注:要在gl/glew.h之前) 其次还要导入库文件glew32.lib:
初始化glew:
可以在init函数开始处初始化(注意:这一步是非常必要的,不然会出现奇怪的错误!): glewInit();
不加这句代码的话,应用程序会出现下列错误:
还可以加入错误处理代码。 编译运行,成功。 完整代码:
[cpp] view plaincopyprint?
#include \ #include \#include \ void init() {
glewInit();
glClearColor(1.0,1.0,0.0,0.0); glBlendFunc(GL_ONE,GL_ONE); glEnable(GL_BLEND); }
void display() {
glClear(GL_COLOR_BUFFER_BIT); glColor3f(0.0,0.0,1.0); glRectf(-0.5,-0.5,0.5,0.5); glFlush(); }
void keyboard(unsigned char key,int x,int y) {
switch(key)
{
case 'a':case 'A':
glBlendEquation(GL_FUNC_ADD); break; case 's':case 'S':
glBlendEquation(GL_FUNC_SUBTRACT); break; case 'r':case 'R':
glBlendEquation(GL_FUNC_REVERSE_SUBTRACT); break; case 'm':case 'M':
glBlendEquation(GL_MIN); break; case 'x':case 'X':
glBlendEquation(GL_MAX); break; case 27: exit(0); break; }
glutPostRedisplay(); }
int main(int argc,char** argv) {
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); glutInitWindowSize(500,500); glutInitWindowPosition(100,100); glutCreateWindow(argv[0]); init();
glutDisplayFunc(display); glutKeyboardFunc(keyboard); glutMainLoop(); return 0; }