c++ 画面算法

来源:百度知道 编辑:UC知道 时间:2024/07/08 01:19:19
游戏精美的画面是 一个点一个点 地 画上去的吗?
我发现这样效率很低呀,高手指导下

另外问下
for(int x = 0;x - 500;x++)
for(int y = 0;y - 500;y++)
SetPixel(hdc,x,y,0);


Rectangle(hdc, 0, 0,500,500);
效果一样 为什么后者效率比前者高好几倍?

我的程序:
#include<windows.h>
#include <math.h>

HDC hdc = GetWindowDC(GetDesktopWindow());

class hcolor
{
public :
int r,g,b,o,visable;

int color()
{
return RGB(r,g,b);
}
};

class graphics
{
public :
hcolor point[799][599];

int refresh()
{
for(int x = 0;x - 799;x++)
for(int y = 0;y - 599;y++)
{
SetPixel(hdc,x,y,0);
}
}
}Graphics;

游戏精美的画面都不是一个点一个点地画上去的,这样效率太低,效果也不好
制作游戏的团队中,都会有美工的,美工用专业的图片处理软件,如photoshop等等,设计精美的图片
然后由程序员写程序读取出这些图片的数据,再绘制到屏幕上

通常,图形函数库中,
包括画点,画线,画矩形等等绘制图形的函数
也包括绘制jpg、bmp、gif等各种格式的图片的函数

任何编程环境下,即有绘制点的函数,也有绘制图象的函数
游戏的精美的效果,都是用绘制图象的函数,绘制出来的

另外问下
for(int x = 0;x - 500;x++)
for(int y = 0;y - 500;y++)
SetPixel(hdc,x,y,0);

Rectangle(hdc, 0, 0,500,500);

效果一样,当然后者的效率高很多, 效率高的不是一点点,至少有百把几十倍

因为SetPixel,是一个点一个点的描,需要两重for循环啊,运算复杂度是O(n^2)
而Rectangle,不进行描点,直接对显示缓冲区进行填充,算法复杂度是O(1)啊

直接调用WINDOWS的GUI/API