mirror of
https://github.com/AxioDL/boo.git
synced 2025-05-16 04:11:21 +00:00
GL: Use return value of emplace_back()
emplace_back() returns a reference to the emplaced element, so we can just make use of it instead of repeatedly querying back().
This commit is contained in:
parent
e3b44edd51
commit
63c89a0bbf
@ -1652,35 +1652,35 @@ struct GLCommandQueue final : IGraphicsCommandQueue {
|
|||||||
|
|
||||||
void setShaderDataBinding(const ObjToken<IShaderDataBinding>& binding) override {
|
void setShaderDataBinding(const ObjToken<IShaderDataBinding>& binding) override {
|
||||||
std::vector<Command>& cmds = m_cmdBufs[m_fillBuf];
|
std::vector<Command>& cmds = m_cmdBufs[m_fillBuf];
|
||||||
cmds.emplace_back(Command::Op::SetShaderDataBinding);
|
auto& cmd = cmds.emplace_back(Command::Op::SetShaderDataBinding);
|
||||||
cmds.back().binding = binding;
|
cmd.binding = binding;
|
||||||
}
|
}
|
||||||
|
|
||||||
void setRenderTarget(const ObjToken<ITextureR>& target) override {
|
void setRenderTarget(const ObjToken<ITextureR>& target) override {
|
||||||
std::vector<Command>& cmds = m_cmdBufs[m_fillBuf];
|
std::vector<Command>& cmds = m_cmdBufs[m_fillBuf];
|
||||||
cmds.emplace_back(Command::Op::SetRenderTarget);
|
auto& cmd = cmds.emplace_back(Command::Op::SetRenderTarget);
|
||||||
cmds.back().target = target.get();
|
cmd.target = target.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
void setRenderTarget(const ObjToken<ITextureCubeR>& target, int face) override {
|
void setRenderTarget(const ObjToken<ITextureCubeR>& target, int face) override {
|
||||||
std::vector<Command>& cmds = m_cmdBufs[m_fillBuf];
|
std::vector<Command>& cmds = m_cmdBufs[m_fillBuf];
|
||||||
cmds.emplace_back(Command::Op::SetCubeRenderTarget);
|
auto& cmd = cmds.emplace_back(Command::Op::SetCubeRenderTarget);
|
||||||
cmds.back().target = target.get();
|
cmd.target = target.get();
|
||||||
cmds.back().bindIdx = face;
|
cmd.bindIdx = face;
|
||||||
}
|
}
|
||||||
|
|
||||||
void setViewport(const SWindowRect& rect, float znear, float zfar) override {
|
void setViewport(const SWindowRect& rect, float znear, float zfar) override {
|
||||||
std::vector<Command>& cmds = m_cmdBufs[m_fillBuf];
|
std::vector<Command>& cmds = m_cmdBufs[m_fillBuf];
|
||||||
cmds.emplace_back(Command::Op::SetViewport);
|
auto& cmd = cmds.emplace_back(Command::Op::SetViewport);
|
||||||
cmds.back().viewport.rect = rect;
|
cmd.viewport.rect = rect;
|
||||||
cmds.back().viewport.znear = znear;
|
cmd.viewport.znear = znear;
|
||||||
cmds.back().viewport.zfar = zfar;
|
cmd.viewport.zfar = zfar;
|
||||||
}
|
}
|
||||||
|
|
||||||
void setScissor(const SWindowRect& rect) override {
|
void setScissor(const SWindowRect& rect) override {
|
||||||
std::vector<Command>& cmds = m_cmdBufs[m_fillBuf];
|
std::vector<Command>& cmds = m_cmdBufs[m_fillBuf];
|
||||||
cmds.emplace_back(Command::Op::SetScissor);
|
auto& cmd = cmds.emplace_back(Command::Op::SetScissor);
|
||||||
cmds.back().viewport.rect = rect;
|
cmd.viewport.rect = rect;
|
||||||
}
|
}
|
||||||
|
|
||||||
void resizeRenderTexture(const ObjToken<ITextureR>& tex, size_t width, size_t height) override {
|
void resizeRenderTexture(const ObjToken<ITextureR>& tex, size_t width, size_t height) override {
|
||||||
@ -1697,75 +1697,74 @@ struct GLCommandQueue final : IGraphicsCommandQueue {
|
|||||||
|
|
||||||
void generateMipmaps(const ObjToken<ITextureCubeR>& tex) override {
|
void generateMipmaps(const ObjToken<ITextureCubeR>& tex) override {
|
||||||
std::vector<Command>& cmds = m_cmdBufs[m_fillBuf];
|
std::vector<Command>& cmds = m_cmdBufs[m_fillBuf];
|
||||||
cmds.emplace_back(Command::Op::GenerateMips);
|
auto& cmd = cmds.emplace_back(Command::Op::GenerateMips);
|
||||||
cmds.back().target = tex.get();
|
cmd.target = tex.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
void schedulePostFrameHandler(std::function<void()>&& func) override { m_pendingPosts1.push_back(std::move(func)); }
|
void schedulePostFrameHandler(std::function<void()>&& func) override { m_pendingPosts1.push_back(std::move(func)); }
|
||||||
|
|
||||||
void setClearColor(const float rgba[4]) override {
|
void setClearColor(const float rgba[4]) override {
|
||||||
std::vector<Command>& cmds = m_cmdBufs[m_fillBuf];
|
std::vector<Command>& cmds = m_cmdBufs[m_fillBuf];
|
||||||
cmds.emplace_back(Command::Op::SetClearColor);
|
auto& cmd = cmds.emplace_back(Command::Op::SetClearColor);
|
||||||
cmds.back().rgba[0] = rgba[0];
|
cmd.rgba = {rgba[0], rgba[1], rgba[2], rgba[3]};
|
||||||
cmds.back().rgba[1] = rgba[1];
|
|
||||||
cmds.back().rgba[2] = rgba[2];
|
|
||||||
cmds.back().rgba[3] = rgba[3];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void clearTarget(bool render = true, bool depth = true) override {
|
void clearTarget(bool render = true, bool depth = true) override {
|
||||||
std::vector<Command>& cmds = m_cmdBufs[m_fillBuf];
|
std::vector<Command>& cmds = m_cmdBufs[m_fillBuf];
|
||||||
cmds.emplace_back(Command::Op::ClearTarget);
|
auto& cmd = cmds.emplace_back(Command::Op::ClearTarget);
|
||||||
cmds.back().flags = 0;
|
cmd.flags = 0;
|
||||||
if (render)
|
if (render) {
|
||||||
cmds.back().flags |= GL_COLOR_BUFFER_BIT;
|
cmd.flags |= GL_COLOR_BUFFER_BIT;
|
||||||
if (depth)
|
}
|
||||||
cmds.back().flags |= GL_DEPTH_BUFFER_BIT;
|
if (depth) {
|
||||||
|
cmd.flags |= GL_DEPTH_BUFFER_BIT;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void draw(size_t start, size_t count) override {
|
void draw(size_t start, size_t count) override {
|
||||||
std::vector<Command>& cmds = m_cmdBufs[m_fillBuf];
|
std::vector<Command>& cmds = m_cmdBufs[m_fillBuf];
|
||||||
cmds.emplace_back(Command::Op::Draw);
|
auto& cmd = cmds.emplace_back(Command::Op::Draw);
|
||||||
cmds.back().start = start;
|
cmd.start = start;
|
||||||
cmds.back().count = count;
|
cmd.count = count;
|
||||||
}
|
}
|
||||||
|
|
||||||
void drawIndexed(size_t start, size_t count) override {
|
void drawIndexed(size_t start, size_t count) override {
|
||||||
std::vector<Command>& cmds = m_cmdBufs[m_fillBuf];
|
std::vector<Command>& cmds = m_cmdBufs[m_fillBuf];
|
||||||
cmds.emplace_back(Command::Op::DrawIndexed);
|
auto& cmd = cmds.emplace_back(Command::Op::DrawIndexed);
|
||||||
cmds.back().start = start;
|
cmd.start = start;
|
||||||
cmds.back().count = count;
|
cmd.count = count;
|
||||||
}
|
}
|
||||||
|
|
||||||
void drawInstances(size_t start, size_t count, size_t instCount, size_t startInst) override {
|
void drawInstances(size_t start, size_t count, size_t instCount, size_t startInst) override {
|
||||||
std::vector<Command>& cmds = m_cmdBufs[m_fillBuf];
|
std::vector<Command>& cmds = m_cmdBufs[m_fillBuf];
|
||||||
cmds.emplace_back(Command::Op::DrawInstances);
|
auto& cmd = cmds.emplace_back(Command::Op::DrawInstances);
|
||||||
cmds.back().start = start;
|
cmd.start = start;
|
||||||
cmds.back().count = count;
|
cmd.count = count;
|
||||||
cmds.back().instCount = instCount;
|
cmd.instCount = instCount;
|
||||||
cmds.back().startInst = startInst;
|
cmd.startInst = startInst;
|
||||||
}
|
}
|
||||||
|
|
||||||
void drawInstancesIndexed(size_t start, size_t count, size_t instCount, size_t startInst) override {
|
void drawInstancesIndexed(size_t start, size_t count, size_t instCount, size_t startInst) override {
|
||||||
std::vector<Command>& cmds = m_cmdBufs[m_fillBuf];
|
std::vector<Command>& cmds = m_cmdBufs[m_fillBuf];
|
||||||
cmds.emplace_back(Command::Op::DrawInstancesIndexed);
|
auto& cmd = cmds.emplace_back(Command::Op::DrawInstancesIndexed);
|
||||||
cmds.back().start = start;
|
cmd.start = start;
|
||||||
cmds.back().count = count;
|
cmd.count = count;
|
||||||
cmds.back().instCount = instCount;
|
cmd.instCount = instCount;
|
||||||
cmds.back().startInst = startInst;
|
cmd.startInst = startInst;
|
||||||
}
|
}
|
||||||
|
|
||||||
void resolveBindTexture(const ObjToken<ITextureR>& texture, const SWindowRect& rect, bool tlOrigin, int bindIdx,
|
void resolveBindTexture(const ObjToken<ITextureR>& texture, const SWindowRect& rect, bool tlOrigin, int bindIdx,
|
||||||
bool color, bool depth, bool clearDepth) override {
|
bool color, bool depth, bool clearDepth) override {
|
||||||
GLTextureR* tex = texture.cast<GLTextureR>();
|
const auto* const tex = texture.cast<GLTextureR>();
|
||||||
std::vector<Command>& cmds = m_cmdBufs[m_fillBuf];
|
std::vector<Command>& cmds = m_cmdBufs[m_fillBuf];
|
||||||
cmds.emplace_back(Command::Op::ResolveBindTexture);
|
auto& cmd = cmds.emplace_back(Command::Op::ResolveBindTexture);
|
||||||
cmds.back().resolveTex = texture;
|
cmd.resolveTex = texture;
|
||||||
cmds.back().bindIdx = bindIdx;
|
cmd.bindIdx = bindIdx;
|
||||||
cmds.back().resolveColor = color;
|
cmd.resolveColor = color;
|
||||||
cmds.back().resolveDepth = depth;
|
cmd.resolveDepth = depth;
|
||||||
cmds.back().clearDepth = clearDepth;
|
cmd.clearDepth = clearDepth;
|
||||||
SWindowRect intersectRect = rect.intersect(SWindowRect(0, 0, tex->m_width, tex->m_height));
|
const SWindowRect intersectRect = rect.intersect(SWindowRect(0, 0, tex->m_width, tex->m_height));
|
||||||
SWindowRect& targetRect = cmds.back().viewport.rect;
|
SWindowRect& targetRect = cmd.viewport.rect;
|
||||||
targetRect.location[0] = intersectRect.location[0];
|
targetRect.location[0] = intersectRect.location[0];
|
||||||
if (tlOrigin)
|
if (tlOrigin)
|
||||||
targetRect.location[1] = tex->m_height - intersectRect.location[1] - intersectRect.size[1];
|
targetRect.location[1] = tex->m_height - intersectRect.location[1] - intersectRect.size[1];
|
||||||
@ -1777,8 +1776,8 @@ struct GLCommandQueue final : IGraphicsCommandQueue {
|
|||||||
|
|
||||||
void resolveDisplay(const ObjToken<ITextureR>& source) override {
|
void resolveDisplay(const ObjToken<ITextureR>& source) override {
|
||||||
std::vector<Command>& cmds = m_cmdBufs[m_fillBuf];
|
std::vector<Command>& cmds = m_cmdBufs[m_fillBuf];
|
||||||
cmds.emplace_back(Command::Op::Present);
|
auto& cmd = cmds.emplace_back(Command::Op::Present);
|
||||||
cmds.back().source = source;
|
cmd.source = source;
|
||||||
}
|
}
|
||||||
|
|
||||||
void addVertexFormat(const ObjToken<IShaderDataBinding>& fmt) {
|
void addVertexFormat(const ObjToken<IShaderDataBinding>& fmt) {
|
||||||
@ -1849,8 +1848,8 @@ struct GLCommandQueue final : IGraphicsCommandQueue {
|
|||||||
void pushDebugGroup(const char* name, const std::array<float, 4>& color) {
|
void pushDebugGroup(const char* name, const std::array<float, 4>& color) {
|
||||||
if (GLEW_KHR_debug) {
|
if (GLEW_KHR_debug) {
|
||||||
std::vector<Command>& cmds = m_cmdBufs[m_fillBuf];
|
std::vector<Command>& cmds = m_cmdBufs[m_fillBuf];
|
||||||
cmds.emplace_back(Command::Op::PushDebugGroup);
|
auto& cmd = cmds.emplace_back(Command::Op::PushDebugGroup);
|
||||||
cmds.back().name = name;
|
cmd.name = name;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user