我是 EasyX 的初学者,正使用EasyX做一个简单的游戏。但是我遇到了一个问题
我把游戏做成全屏的效果,它会十分迅速的计算出每个像素的颜色,并且储存在二维数组当中。可是如果使用 putpixel(x,y,color) 函数逐个绘制每个像素,大概需要2~4秒的时间。即使画面每次仅改变一部分像素,相对于144Hz屏幕来说,这个时间也是非常慢的。下面的代码是一个测试。
有什么方法,可以迅速把这个二维数组存储的数据,打印到屏幕吗?
#include <graphics.h>
#include <conio.h>
int main(){
//获取屏幕尺寸
int window_width = GetSystemMetrics(SM_CXSCREEN);
int window_height = GetSystemMetrics(SM_CYSCREEN);
//创建等同屏幕大小的窗口
initgraph(window_width, window_height, EW_SHOWCONSOLE);
//获取窗口句柄,并全屏
HWND hwnd = GetHWnd();
SetWindowLong(hwnd, GWL_STYLE, GetWindowLong(hwnd, GWL_STYLE) - WS_CAPTION);
SetWindowPos(hwnd, HWND_TOP, 0, 0, GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CXSCREEN), SWP_SHOWWINDOW);
//进行第一次全屏逐像素打印,颜色:蓝色
for(int i=0;i<window_width;i++){
for(int j=0;j<window_height;j++){
putpixel(i,j,BLUE);
}
}
//按下任意键,进行第二次逐像素打印
_getch();
for(int i=0;i<window_width;i++){
for(int j=0;j<window_height;j++){
putpixel(i,j,RED);
}
}
// 按任意键退出
_getch();
closegraph();
return 0;
}