使用C ++绘制图形(这是如何工作的?)(以及更快编译器的技巧?)

时间:2014-03-22 18:57:43

标签: c++ graphics compilation window

我已经在Gamemaker和Flash中随机制作了大约4 - 5年的东西,但我一直想用C ++编写代码。 (我不想使用游戏引擎,我更感兴趣的是自己编写游戏引擎。)

我的目标是最终以早期3D风格编写引擎(我想模仿低聚字符,低分辨率纹理,游泳纹理和聚合物等的PSX外观) 。)就像我小时候玩过的游戏一样。

但我想从小开始。

从图书馆借阅了一些关于基础知识和简单代码的书籍(这是一种有趣的体验)后,我想进一步了解图形如何使用C ++。不是3D图形,只是图形。 (也许是一个小精灵)我想做一些简单的事情并深入了解它是如何工作的。

我想在新窗口中绘制图形(320x240,没有抗锯齿)并摆脱控制台窗口。我是初学者,我真的不明白这是如何运作的,但据我所知,C ++只是一种编程语言而且我必须包含其他内容(我不会这样做)知道)绘制图形。

我使用Notepad ++和MinGW编译我的代码。 (虽然编译速度非常慢。我很想知道一个更好,更快,但免费的编译器,就像MinGW一样,可以在多个平台上运行)

我希望有人可以帮助我。

谢谢,

〜一个非常热情的新手(和建模师/艺术家/音乐家)有很多想法。

1 个答案:

答案 0 :(得分:1)

MinGW是GCC的一个端口,适用于所有类UNIX系统。 如果您想要一个真正的跨平台编译器,您可以使用LLVM / Clang(免费和开源(BSD许可证))或英特尔编译器(商业,但更快)。

要绘制内容,您可以:使用本机API(痛苦),使用图形工具包(DirectX,OpenGL ...)(也很痛苦),使用库(用于2D和处理内容,SDL很受欢迎,但我更喜欢SFML)(对于3D,你可能会考虑GLFW)。

看看所有这些,决定你更喜欢哪些(它们都是跨平台的)并阅读他们的文档/ API /教程。


SFML API示例(直接回答有关如何绘制精灵的问题)

#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太硬核)并通过命令行编译:)