用c++绘制图形(这是如何工作的?)(以及更快的编译器的提示?)
Drawing graphics with C++ (How does this work?) (And tips for a faster compiler?)
我已经在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太硬核)和编译通过命令行:)
- C/C++编译器通常会删除重复的库吗
- 模板-模板参数推导:三个不同的编译器三种不同的行为
- Win32编译器选项和内存分配
- MSVC多行宏编译器错误
- 静态数据成员的问题-修复链接错误会导致编译器错误
- C++,我收到一个无法理解的编译器错误
- 在线编译器中的分段C++没有打印消息
- 如何解决gcc编译器优化导致的centos双编译器设置中的分段错误
- C/C++预处理器是否可以检测一些编译器选项
- 提示编译器浮点向量计数可以被 8 整除?
- 提示编译器在使用 auto 时通过引用返回,而不使用 ->
- 我重载了一个运算符*()函数来计算两个矩阵的总和,但编译器提示此错误
- 为什么编译器在使用检测习惯用语时不提示双重定义?
- 可视化如何禁用 msvc c++ 编译器的"note:"提示
- g++编译器提示在堆栈上进行分配
- 如何向编译器提供有关循环运行最长时间的提示
- 如何确保我的代码是ansi C,不涉及C++.像gcc这样的编译器是否可以设置为在满足C++中的功能时提示错误
- c++模板:向编译器提示模板参数
- 兼容c++11的编译器总是忽略内联提示吗?
- 用c++绘制图形(这是如何工作的?)(以及更快的编译器的提示?)