fix critical bug
This commit is contained in:
@@ -2,46 +2,6 @@
|
|||||||
|
|
||||||
#include "amethyst/iron.hpp"
|
#include "amethyst/iron.hpp"
|
||||||
|
|
||||||
const char* shader_ = R"(; Example PICA200 vertex shader
|
|
||||||
|
|
||||||
; Uniforms
|
|
||||||
.fvec projection[4]
|
|
||||||
|
|
||||||
; Constants
|
|
||||||
.constf myconst(0.0, 1.0, -1.0, 0.1)
|
|
||||||
.constf myconst2(0.3, 0.0, 0.0, 0.0)
|
|
||||||
.alias zeros myconst.xxxx ; Vector full of zeros
|
|
||||||
.alias ones myconst.yyyy ; Vector full of ones
|
|
||||||
|
|
||||||
; Outputs
|
|
||||||
.out outpos position
|
|
||||||
.out outclr color
|
|
||||||
|
|
||||||
; Inputs (defined as aliases for convenience)
|
|
||||||
.alias inpos v0
|
|
||||||
.alias inclr v1
|
|
||||||
|
|
||||||
.bool test
|
|
||||||
|
|
||||||
.proc main
|
|
||||||
; Force the w component of inpos to be 1.0
|
|
||||||
mov r0.xyz, inpos
|
|
||||||
mov r0.w, ones
|
|
||||||
|
|
||||||
; outpos = projectionMatrix * inpos
|
|
||||||
dp4 outpos.x, projection[0], r0
|
|
||||||
dp4 outpos.y, projection[1], r0
|
|
||||||
dp4 outpos.z, projection[2], r0
|
|
||||||
dp4 outpos.w, projection[3], r0
|
|
||||||
|
|
||||||
; outclr = inclr
|
|
||||||
mov outclr, inclr
|
|
||||||
|
|
||||||
; We're finished
|
|
||||||
end
|
|
||||||
.end
|
|
||||||
)";
|
|
||||||
|
|
||||||
class example : public amy::app {
|
class example : public amy::app {
|
||||||
public:
|
public:
|
||||||
example() {
|
example() {
|
||||||
@@ -52,11 +12,20 @@ class example : public amy::app {
|
|||||||
amy::iron::init();
|
amy::iron::init();
|
||||||
dl = new amy::iron::drawlist();
|
dl = new amy::iron::drawlist();
|
||||||
dl->drawSolid();
|
dl->drawSolid();
|
||||||
// throw std::runtime_error(std::format(
|
auto cmd = std::make_unique<amy::iron::command>();
|
||||||
// "solid tex: {:#08x}\nsize: {}\nptr: {:#08x}",
|
cmd->index = 0;
|
||||||
// (amy::ui)amy::iron::whiteTex(), amy::iron::whiteTex()->size(),
|
cmd->layer = 0;
|
||||||
// (amy::ui)amy::iron::whiteTex()->ptr()));
|
cmd->tex = amy::iron::whiteTex();
|
||||||
};
|
cmd->add(0).add(1).add(2);
|
||||||
|
cmd->add(amy::iron::vertex(200, 50, 0, 0, 0xff0000ff));
|
||||||
|
cmd->add(amy::iron::vertex(100, 190, 0, 0, 0xff00ff00));
|
||||||
|
cmd->add(amy::iron::vertex(300, 190, 0, 0, 0xffff0000));
|
||||||
|
cmdl.push_back(std::move(cmd));
|
||||||
|
// throw std::runtime_error(std::format(
|
||||||
|
// "solid tex: {:#08x}\nsize: {}\nptr: {:#08x}",
|
||||||
|
// (amy::ui)amy::iron::whiteTex(), amy::iron::whiteTex()->size(),
|
||||||
|
// (amy::ui)amy::iron::whiteTex()->ptr()));
|
||||||
|
};
|
||||||
~example() {
|
~example() {
|
||||||
amy::c3d::deleteScreen(m_top);
|
amy::c3d::deleteScreen(m_top);
|
||||||
amy::c3d::deinit();
|
amy::c3d::deinit();
|
||||||
@@ -66,17 +35,19 @@ class example : public amy::app {
|
|||||||
amy::c3d::startFrame();
|
amy::c3d::startFrame();
|
||||||
m_top->startDraw();
|
m_top->startDraw();
|
||||||
m_top->clear();
|
m_top->clear();
|
||||||
dl->drawRectFilled(0, 50, 0xff00ff00);
|
// dl->drawRectFilled(0, 50, 0xff00ff00);
|
||||||
amy::iron::newFrame();
|
amy::iron::newFrame();
|
||||||
amy::iron::drawOn(m_top);
|
amy::iron::drawOn(m_top);
|
||||||
amy::iron::draw(dl->data());
|
// amy::iron::draw(dl->data());
|
||||||
dl->clear();
|
amy::iron::draw(cmdl);
|
||||||
|
// dl->clear();
|
||||||
amy::c3d::endFrame();
|
amy::c3d::endFrame();
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
amy::c3d::screen* m_top = nullptr;
|
amy::c3d::screen* m_top = nullptr;
|
||||||
amy::iron::drawlist* dl = nullptr;
|
amy::iron::drawlist* dl = nullptr;
|
||||||
|
std::vector<amy::iron::command::ref> cmdl;
|
||||||
};
|
};
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#include <amethyst/iron.hpp>
|
#include <amethyst/iron.hpp>
|
||||||
|
#include <fstream>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
||||||
#define catch2() \
|
#define catch2() \
|
||||||
@@ -108,10 +109,10 @@ void iron::draw(const std::vector<iron::command::ref>& data) {
|
|||||||
auto c = data[i].get();
|
auto c = data[i].get();
|
||||||
|
|
||||||
for (int j = 0; j < c->indexBuf.size(); j++) {
|
for (int j = 0; j < c->indexBuf.size(); j++) {
|
||||||
m_ibuf[m_idx++] = m_vtx + c->indexBuf[i];
|
m_ibuf[m_idx++] = m_vtx + c->indexBuf[j];
|
||||||
}
|
}
|
||||||
for (int j = 0; j < c->vertexBuf.size(); j++) {
|
for (int j = 0; j < c->vertexBuf.size(); j++) {
|
||||||
m_vbuf[m_vtx++] = c->vertexBuf[i];
|
m_vbuf[m_vtx++] = c->vertexBuf[j];
|
||||||
}
|
}
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user