Graphics 模块
继承关系(概念):
Drawable← Sprite / Text / Shape / VertexArray / VertexBuffer …Transformable← Sprite / Text / Shape …RenderTarget←RenderWindow、RenderTextureRenderWindow:Window+RenderTarget
Drawable / Transformable
Section titled “Drawable / Transformable”- Drawable:实现
draw(RenderTarget&, RenderStates) const - Transformable:
set/getPosition(Vector2f)、set/getRotation(Angle)、set/getScale(Vector2f)、set/getOrigin(Vector2f)、move、rotate(Angle)、scale、getTransform/getInverseTransform
RenderTarget / RenderWindow / RenderTexture
Section titled “RenderTarget / RenderWindow / RenderTexture”window.clear(sf::Color::Black); // 或带 stencil 的 clear 重载window.setView(view);window.draw(drawable); // 可选 RenderStateswindow.draw(vertices, count, type, states);window.display();RenderTexture:尺寸构造 /resize;display()后getTexture()只读引用- 截屏替代已删的
RenderWindow::capture:用Texture::update(window)再copyToImage()
Texture / Image / Sprite
Section titled “Texture / Image / Sprite”const sf::Texture texture("image.png"); // 失败抛 sf::Exception// 或 texture.loadFromFile(...); resize(Vector2u); update(...);sf::Sprite sprite(texture); // 必须带 Texture;无默认构造sprite.setTextureRect(sf::IntRect({10,10},{32,32}));sprite.setColor(sf::Color::White);sprite.setPosition({100.f, 50.f});sprite.setRotation(sf::degrees(45.f));- Texture:
loadFromFile/Memory/Stream/Image,setSmooth/setRepeated/generateMipmap,getMaximumSize() - Image:CPU 像素;
loadFromFile/saveToFile/saveToMemory;3.1 支持 QOI(.qoi) create→resize(Texture / Image / RenderTexture)- Sprite:
getTexture()返回 引用(非指针);禁止绑定临时 Texture(=delete)
Font / Text(3.1 强化排版)
Section titled “Font / Text(3.1 强化排版)”const sf::Font font("arial.ttf"); // openFromFile;非 loadFromFilesf::Text text(font, "Hello", 50); // Font 必须第一参数text.setFillColor(sf::Color::Red); // 非 setColortext.setStyle(sf::Text::Bold | sf::Text::Underlined);3.1 Text 新能力:
- HarfBuzz / SheenBidi 塑形:
getShapedGlyphs()→ShapedGlyph{glyph, position, cluster, textDirection, baseline, vertexOffset, vertexCount} setLineAlignment(LineAlignment::{Default,Left,Center,Right})setTextOrientation(TextOrientation::{Default,TopToBottom,BottomToTop})setClusterGrouping(ClusterGrouping::{Grapheme,Character,None})setGlyphPreProcessor(...)逐字形改 style / fill / outline- 弃用:
findCharacterPos→getShapedGlyphs()(注意:局部坐标 vs 旧 API 全局坐标) - 弃用:
Font::getKerning(uint32_t,...)→char32_t重载
基类 Shape;CircleShape、RectangleShape、ConvexShape。
填充 / 描边:setFillColor、setOutlineColor、setOutlineThickness、setTexture / setTextureRect。
Vertex / VertexArray / VertexBuffer
Section titled “Vertex / VertexArray / VertexBuffer”Vertex:聚合初始化(无构造函数):position、color、texCoordsPrimitiveTypescoped:Points、Lines、LineStrip、Triangles、TriangleStrip、TriangleFan- 已删:
Quads、旧名LinesStrip/TrianglesStrip/TrianglesFan
- 已删:
VertexBuffer::Usagescoped enum
Shader
Section titled “Shader”- 加载:文件 / 内存 / 流 + 类型;失败可抛异常的构造
setUniform/setUniformArray(已无setParameter)Shader::Typescoped;sf::Glsl命名空间辅助类型
setCenter、setSize、setRotation(Angle)、setViewport、setScissor、move、rotate、zoom- 无
reset:直接赋新View
BlendMode / RenderStates / CoordinateType
Section titled “BlendMode / RenderStates / CoordinateType”// 预置混合模式是命名空间级常量:sf::BlendAlpha / BlendAdd / BlendMultiply / BlendMin / BlendMax / BlendNonesf::RenderStates states(sf::BlendAlpha, sf::StencilMode{}, sf::Transform{}, sf::CoordinateType::Pixels, /*texture*/ nullptr, /*shader*/ nullptr);// 或默认:sf::RenderStates::Default// 成员:blendMode, stencilMode, transform, coordinateType, texture, shaderBlendMode::Factor / Equation 为 scoped enums。
CoordinateType 独立 enum class(不再挂在 Texture 下)。
常用静态色;RGBA 分量。
相关教程:Drawing、Sprite / Text 等。