我的OpenGL位图程序崩溃了?

问题描述:

我正在使用OpenGL和http://partow.net/programming/bitmap/的位图库使程序在我的屏幕上加载位图。我已经使它在我的屏幕上加载了一个位图,但是当我尝试使用p.x和p.y(来自GetCursorPos)在光标位置加载图像时,应用程序崩溃。 这里是我的代码:我的OpenGL位图程序崩溃了?

void Image(HDC hDC, string File_Name, int x_position, int y_position, int length, int height)  // Image() 
{ 
File_Name = "C:/Users/David/Pictures/" + File_Name + ".bmp";  // add a full path to the file name 
bitmap_image image(File_Name);         // Open the bitmap 
unsigned char red; 
unsigned char green; 
unsigned char blue; 
restart: 
image.get_pixel(x_position, y_position, red, green, blue);  // Get the red green and blue from x_position and y_position  and store it in red green and blue. 
glBegin (GL_TRIANGLES);           // Make a pixel at x_position and y_position with red green and blue. 
glColor3ub (red, green, blue); 
glVertex2f (-1 + 0.0015 * x_position, 1 - 0.003 * y_position); 
glVertex2f (-1 + 0.0015 * x_position, 0.997 - 0.003 * y_position); 
glVertex2f (-0.9985 + 0.0015 * x_position, 1 - 0.003 * y_position); 
glEnd(); 
glBegin (GL_TRIANGLES); 
glColor3ub (red, green, blue); 
glVertex2f (-1 + 0.0015 * x_position, 0.997 - 0.003 * y_position); 
glVertex2f (-0.9985 + 0.0015 * x_position, 1 - 0.003 * y_position); 
glVertex2f (-0.9985 + 0.0015 * x_position, 0.997 - 0.003 * y_position); 
glEnd(); 
if (x_position==length)    // If x_position equals to length of bmp set x_position to 0 and add 1 to y_position. 
{ 
if (y_position==height)    // If bmp is done loading go to done. 
{ 
goto done; 
} 
x_position = 0; 
y_position = y_position + 1; 
} 
x_position = x_position + 1; 
goto restart; 
done:   
SwapBuffers(hDC);     // Put it on the screen   
} 



int main()    // int main() 
{ 
POINT p; 
if(GetCursorPos(&p)) 
{ 
Image(hDC, "Image", p.x, p.y, 1340, 678); 
} 
} 

我使用开发C++在Windows 7 谢谢!

+1

你已经在这个函数之外建立了一个OpenGL上下文吗? https://open.gl/context –

您还需要设置一个OpenGL上下文才能使其工作。看看这个:https://www.opengl.org/wiki/Creating_an_OpenGL_Context_(WGL)

+1

我已经这样做了,我只是在另一个文件中。但感谢您的帮助! – wdt12