Оригинальный вопрос:C++ Сглаживание линии для начинающего SDL
Меня попросили до собеседования, чтобы понять, как сглаживается линия рисуется в буфере кадра, используя C или C++ , Я не использовал C, и для меня это было несколько лет с тех пор, как я использовал C++. Я доволен, когда дело доходит до графики. Мой опыт в C++ имеет , в основном, в простых командных программах и методах сортировки. Компания не волнует, хватаю ли я код онлайн, они хотят, чтобы я понимал это, но все еще имеет рабочий исполняемый файл.
Я использовал this tutorial для настройки библиотек SDL в MS VC++ 2012 Express и this algorithm для фактического сглаживания. У меня есть хорошее понимание алгоритма, хотя в настоящее время у меня есть проблема с его компиляцией. Я просто хочу, чтобы линия была нарисована, и , тогда я могу идти вперед с установкой кода до класса скелета определений, которые мне даны. Это то, что я включил в стороне от того, что на этой странице с алгоритмом:
#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 ссылается функция _Главная Ошибка 22 ошибки LNK1120: 1 неразрешенных Externals
Я видел несколько примеров кода говорят основная функция должна выглядеть так:
int main(int argc, char *argv[]) { }
Опять же, графический материал мне незнаком, поэтому я знаю, что моя основная функция , скорее всего, очень не прав; Я предвкушаю трясущиеся головы. Может кто-то объяснить, что происходит/что мне нужно делать?
Новое:
Я теперь заменил мою главную функцию со следующим кодом, основанный на видео YouTube NomNomNom069 в: "C++ SDL Tutorial 2 Создание экрана и Handling Basic Input"
#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
. Эта функция вызывает 4 double
s, a Uint32
переменную и SDL_Surface*
. У меня есть double
с, я установил Uint32
к 0x000000FF
, и я полагаю, что SDL_Surface
я настроил, как screen
это один проходили в.
Я играл вокруг с тем, где вызов WuLinesAlpha
функции идет, и я продолжаю получив черный экран. Я подумал, что, как объяснено в видео, оно будет идти в цикле, но ничего не произошло. Есть ли еще команды SDL, которые я должен вызывать?
Благодарю вас за ваш ответ, но вы меня больше смутили. Не могли бы вы дать некоторые пояснения к своим рекомендациям? «Исправить вашу основную декларацию сначала» не очень полезно, не зная, что нужно исправлять. Это точный урок, который я использовал, как я уже говорил. – user2672543
Извинения. Я пропустил основную функцию, указанную в руководстве для правильного. Теперь я перешел к этому вопросу. Теперь я достиг еще одного препятствия и поставил этот вопрос в качестве ответа. – user2672543
Я попытался понять реализацию алгоритма Ву, с которым вы связаны. Должен признаться, я не хотел прикладывать усилия к пониманию этой конкретной реализации. Майкл Абраш дал довольно хорошее истолкование алгоритма У в своих книгах по программированию («Дзен графического программирования», изначально, и совсем недавно его Черная книга). Вот ссылка в формате PDF на соответствующую главу: http://downloads.gamedev.net/pdf/gpbb/gpbb42.pdf Надеюсь, вы сможете установить мост между тем, как вы хотите использовать SDL и этот алгоритм. Однако я не мог сказать вам, какую часть вы должны изучить для интервью. –