我已经在 Gamemaker 和 Flash 中制作随机的东西大约 4-5 年了,但我一直想用 C++ 编写代码。 (我不想使用游戏引擎,我更感兴趣的是自己编写。)
我的目标是最终编写一个早期 3D 风格的引擎(我想模仿低多边形角色、低分辨率纹理、“游泳”纹理和多边形等的 PSX 外观)作为对游戏的回归我小时候玩过。
但我想从小做起。
在从图书馆借了一些关于基础知识和简单代码的书(这是一次有趣的经历)之后,我想更进一步,了解图形如何与 C++ 一起工作。不是 3D 图形,只是一般图形。 (也许是一个小 Sprite )我想做一些简单的事情并深入了解它是如何工作的。
我想在新窗口(320x240,无抗锯齿)中绘制图形并摆脱控制台窗口。我是初学者,我不太明白它是如何工作的,但据我了解,C++ 只是一种编程语言,我必须包含其他东西(我不知道)来绘制图形。
我正在使用 Notepad++ 和 MinGW 来编译我的代码。 (尽管编译速度非常慢。我很想知道一个更好更快但免费的编译器,就像 MinGW 一样,可以跨多个平台工作)
我希望有人能帮助我。
谢谢,
~一个非常热情的新手(和建模师/艺术家/音乐家),有很多想法。
MinGW 是 GCC 的一个端口,适用于所有类 UNIX 系统。
如果您想要一个真正的跨平台编译器,您可以使用 LLVM/Clang(免费和开源(BSD 许可))或 Intel 编译器(商业的,但速度更快)。
要绘制事物,您可以:使用 native API(痛苦),使用图形工具包(DirectX、OpenGL...)(也痛苦),使用库(对于 2D 和事物处理,SDL 很流行,但我更喜欢 SFML)(对于 3D,您可以考虑 GLFW)。
查看所有这些,决定您更喜欢哪些(它们都是跨平台的)并阅读它们的文档/API/教程。
SFML API 示例(直接回答有关如何绘制 Sprite 的问题)
#include <SFML/Graphics.hpp>
int main()
{
sf::RenderWindow window(sf::VideoMode(600,800), "Example!");//window information, can be more precise
sf::Texture texture;//a texture for the sprite
if(!texture.loadFromFile("MySprite.png")//load the texture
{
return 1;
}
sf::Sprite sprite(texture);//make the sprite from the texture
while(window.isOpen())//until window dies
{
sf::Event event; //event handling
while(window.pollEvent(event))
{
if(event.type == sf::Event::Closed)
window.close();// let window close if it's closed
}
window.clear(); //clear screen
window.draw(sprite);//draw the sprite wherever it is
window.display();//switch buffers
}
}
另外,一个小的旁注。开发(完全跨平台)往往在 UNIX 上工作得更好(因为你不必经历在 Windows 上设置的巨大痛苦,还记得任何图书馆开始工作有多痛苦吗?)我建议你也看看 CMake (或其任何替代品),vim(或 geany,如果 vim 太硬核)并通过命令行编译 :)