原始问题:
在工作面试之前,我被要求了解如何使用 C 或 C++ 在帧缓冲区中绘制抗锯齿线。我没有用过 C,距离上次使用 C++ 已经有好几年了。在图形方面,我是一个完整的初学者。我的 C++ 经验主要是简单的命令行程序和排序方法。该公司不在乎我是否在网上获取代码,他们希望我理解它但仍然有一个工作可执行文件。
我已使用本教程在 MS VC++ 2012 Express 中设置 SDL 库,并使用此算法进行实际的抗锯齿。我对该算法有很好的理解,尽管我目前无法编译它。我只想画一条线,然后我可以继续将代码设置为给定的骨架类定义。除了该页面上的算法内容之外,这就是我所包含的内容:
#include <cmath> #include <math.h> #include "conio.h" #include "stdlib.h" #include "stdio.h" #include "SDL.h" const double HEIGHT = 240; const double WIDTH = 320; const double X0 = 25.6; const double X1 = 64.7; const double Y0 = 30; const double Y1 = 42; int round(double number) { return number < 0.0 ? ceil(number - 0.5) : floor(number + 0.5); } void main() { Uint32 pixelColor = 00000000000000000000000000000000; SDL_Surface* myScreen = SDL_CreateRGBSurface(SDL_ALPHA_OPAQUE,WIDTH,HEIGHT,32, 0x000000FF,
0x0000FF00, 0x00FF0000, 0xFF000000);
WULinesAlpha(X0, X1, Y0, Y1,pixelColor,myScreen); return; }
我收到以下错误:
错误 21 错误 LNK2019:未解析的外部符号 _SDL_main 在函数 _main 中引用 错误 22 错误 LNK1120:1 个未解析的外部符号
我看过一些代码示例,说 main 函数必须如下所示:
int main(int argc, char *argv[]) { }
再说一次,我不熟悉图形的东西,所以我知道我的主要功能很可能是错误的;我期待一些摇头。有人可以解释发生了什么/我需要做什么吗?
新的:
现在,我根据 NomNomNom069 的 YouTube 视频将我的 main 函数替换为以下代码:“C++ SDL 教程 2 创建屏幕和处理基本输入”
#include "SDL.h"
int main(int argc, char * args[])
{
bool running = true;
//initialize SDL
if (SDL_Init(SDL_INIT_EVERYTHING) == -1)
{
running = false;
}
//set up screen
SDL_Surface *screen;
screen = SDL_SetVideoMode(WIDTH, HEIGHT, 32, SDL_HWSURFACE);
if (screen == NULL)
{
running = false;
}
SDL_Event occur;
//main application loop
while (running)
{
SDL_PollEvent(&occur);
if (occur.type == SDL_QUIT)
{
running = false;
}
//drawing occurs here
SDL_FillRect(screen, NULL, 0);
SDL_Flip(screen);
}
//quit SDL
SDL_Quit();
return 0;
}
没有错误,我会弹出一个窗口。惊人的。
我现在的问题是关于如何/在哪里打电话WuLinesAlpha
。此函数需要 4double
秒、一个Uint32
变量和一个SDL_Surface*
. 我有我double
的 s,我将其设置Uint32
为0x000000FF
,并且我假设SDL_Surface
我已设置为screen
传入的那个。
我玩弄了WuLinesAlpha
函数调用的去向,但一直黑屏。我想,正如视频中解释的那样,它会进入循环,但什么也没发生。还有更多我应该调用的 SDL 命令吗?