OPENGL的glutSwapBuffers(); 调用到这个函数就崩溃了
什么问题 这个最后调用的一个函数
以下是具体代码#include "stdafx.h"#include <windows.h>#include <gl\glut.h>
// ASCII字符总共只有0到127,一共128种字符
#define MAX_CHAR 128void drawString(const char* str) { static int isFirstCall = 1;
static GLuint lists;
if( isFirstCall ) { // 如果是第一次调用,执行初始化
// 为每一个ASCII字符产生一个显示列表
isFirstCall = 0;
// 申请MAX_CHAR个连续的显示列表编号
lists = glGenLists(MAX_CHAR);
// 把每个字符的绘制命令都装到对应的显示列表中
wglUseFontBitmaps(wglGetCurrentDC(), 0, MAX_CHAR, lists);
}
// 调用每个字符对应的显示列表,绘制每个字符
for(; *str!='\0'; ++str)
glCallList(lists + *str);
}
void display(void) {
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0f, 0.0f, 0.0f);
glRasterPos2f(0.0f, 0.0f);
drawString("Hello, World!");
glutSwapBuffers();
}int main(int argc, char* argv[])
{
display();
return 0;
}
什么问题 这个最后调用的一个函数
以下是具体代码#include "stdafx.h"#include <windows.h>#include <gl\glut.h>
// ASCII字符总共只有0到127,一共128种字符
#define MAX_CHAR 128void drawString(const char* str) { static int isFirstCall = 1;
static GLuint lists;
if( isFirstCall ) { // 如果是第一次调用,执行初始化
// 为每一个ASCII字符产生一个显示列表
isFirstCall = 0;
// 申请MAX_CHAR个连续的显示列表编号
lists = glGenLists(MAX_CHAR);
// 把每个字符的绘制命令都装到对应的显示列表中
wglUseFontBitmaps(wglGetCurrentDC(), 0, MAX_CHAR, lists);
}
// 调用每个字符对应的显示列表,绘制每个字符
for(; *str!='\0'; ++str)
glCallList(lists + *str);
}
void display(void) {
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0f, 0.0f, 0.0f);
glRasterPos2f(0.0f, 0.0f);
drawString("Hello, World!");
glutSwapBuffers();
}int main(int argc, char* argv[])
{
display();
return 0;
}
#include <gl\glut.h>
#pragma comment(lib, "glut32.lib")
// ASCII字符总共只有0到127,一共128种字符
#define MAX_CHAR 128void drawString(const char* str) { static int isFirstCall = 1;
static GLuint lists; if( isFirstCall ) { // 如果是第一次调用,执行初始化
// 为每一个ASCII字符产生一个显示列表
isFirstCall = 0; // 申请MAX_CHAR个连续的显示列表编号
lists = glGenLists(MAX_CHAR); // 把每个字符的绘制命令都装到对应的显示列表中
wglUseFontBitmaps(wglGetCurrentDC(), 0, MAX_CHAR, lists);
}
// 调用每个字符对应的显示列表,绘制每个字符
for(; *str!='\0'; ++str)
glCallList(lists + *str);
}
void display(void) {
glClearColor(0.0f,0.0f,0.0f,0.0);
glClear(GL_COLOR_BUFFER_BIT); glColor3f(1.0f, 0.0f, 0.0f);
glRasterPos2f(0.0f, 0.0f);
drawString("Hello, World!");
glFlush();
glutSwapBuffers();
}int main(int argc, char* argv[])
{
glutInit(&argc, argv); // initialize GLUT
glutInitDisplayMode(GLUT_RGBA); // declare initial window size, position and play mode
glutInitWindowPosition(100, 100);
glutInitWindowSize(500, 500);
glutCreateWindow("hello world!"); // open window with "hello world!" in its title bar
glutDisplayFunc(display); // register callback function to display graphics
glutMainLoop(); // enter main loop and process event
return 0;
}