用c++绘制图形(这是如何工作的?)(以及更快的编译器的提示?)

Drawing graphics with C++ (How does this work?) (And tips for a faster compiler?)

本文关键字:提示 编译器 图形 绘制 c++ 何工作 工作      更新时间:2023-10-16

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

我的目标是最终编写一个早期3D风格的引擎(我想模仿PSX的低多边形角色,低分辨率纹理,"游泳"纹理和多边形等),就像回到我小时候玩过的游戏一样。

但我想从小处开始。

从图书馆借了一些关于基础知识和简单代码的书(这是一个有趣的经历)后,我想更进一步,了解图形如何与c++一起工作。不是3D图形,只是一般的图形。我想做一些简单的东西,并深入了解它是如何运作的。

我想在一个新窗口(320x240,无抗锯齿)中绘制图形,并摆脱控制台窗口。我是一个初学者,我真的不明白这是如何工作的,但据我所知,c++只是一种编程语言,我必须包括其他一些东西(我不知道)来绘制图形。

我使用notepad++和MinGW来编译我的代码。(尽管编译速度很慢。我很想知道一个更好更快的,但是免费的编译器,就像MinGW一样,在多个平台上工作)

我希望有人能帮助我。

谢谢,

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

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