这个有关问题能不能说成是函数重载?小弟我也不知道,请帮忙
这个问题能不能说成是函数重载?我也不知道,请帮忙
我写个在指定位置画像素的程序,传入参数是x,y,r,g,b...
表示坐标和RGB色,现在问题是16位RGB有555和565两种模式,32位又有(8)888和(X)888模式,我想只用一个函数来写画像素,如:
Draw(int x, int y, int R, int G, int B, USHORT *video_buffer, int lpitch)
如果我在里面写个switch的话会不会每执行一次就去判断一次,这样好像很低效,我想在一开始判断显示模式,(如现在判断出是16BIT555)以后就一直用16BIT555模式
在initGame()里判断Draw_Mode,然后这个Mode就定了,以后都不用再判断
我在宏里已经写好Draw16Bit555和Draw16Bit565还有Draw32Bit等了,但是在GameMain()里要用的时候我发觉每次都判断不好,我再想有没有什么方法可以在初始化时一次选定模式, 以后在GameMain()里就只用同一语句完成Draw的工作
各位有什么好方法??
------解决方案--------------------
1.首先這樣判定並不會慢,因為通常不直接調用這個函數畫點.
2.你可以採用表驅動的方法
一個函數指針的數組,包含所有模式的繪圖方法, 查表找到需要的函數,這樣不需要比較.
3.類似於多態的方法. 效率基本和方法2一樣.但使用不方便.
另外我覺得你要實現的基本函數應該是FillRect ,DrawDot可以用它實現.
我写个在指定位置画像素的程序,传入参数是x,y,r,g,b...
表示坐标和RGB色,现在问题是16位RGB有555和565两种模式,32位又有(8)888和(X)888模式,我想只用一个函数来写画像素,如:
Draw(int x, int y, int R, int G, int B, USHORT *video_buffer, int lpitch)
如果我在里面写个switch的话会不会每执行一次就去判断一次,这样好像很低效,我想在一开始判断显示模式,(如现在判断出是16BIT555)以后就一直用16BIT555模式
在initGame()里判断Draw_Mode,然后这个Mode就定了,以后都不用再判断
我在宏里已经写好Draw16Bit555和Draw16Bit565还有Draw32Bit等了,但是在GameMain()里要用的时候我发觉每次都判断不好,我再想有没有什么方法可以在初始化时一次选定模式, 以后在GameMain()里就只用同一语句完成Draw的工作
各位有什么好方法??
------解决方案--------------------
1.首先這樣判定並不會慢,因為通常不直接調用這個函數畫點.
2.你可以採用表驅動的方法
一個函數指針的數組,包含所有模式的繪圖方法, 查表找到需要的函數,這樣不需要比較.
3.類似於多態的方法. 效率基本和方法2一樣.但使用不方便.
另外我覺得你要實現的基本函數應該是FillRect ,DrawDot可以用它實現.