10#include "plane.vert.h"
11#include "plane.frag.h"
14#include "screen.vert.h"
15#include "background.frag.h"
25 PLANE_VERT,
sizeof(PLANE_VERT),
26 PLANE_FRAG,
sizeof(PLANE_FRAG));
31 const int w = k * 10 + 1;
32 const int h = k * 10 + 1;
33 std::vector<char> img(w * h, 0);
34 for (
int j = 0; j < h; ++j)
36 for (
int i = 0; i < w; ++i)
38 if (j == 0 || i == 0 || j == (h - 1) || i == (w - 1))
40 else if ((j % k) == 0 || (i % k) == 0)
45 mRulerTex.minFilter = GL_LINEAR_MIPMAP_LINEAR;
55 glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY, 16);
86 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
89 mProgram->setFloat(
"uPlaneScale", planeScale);
90 mProgram->setFloat(
"uRulerScale", rulerScale);
91 mProgram->setVec4(
"uPlaneColor", planeColor);
92 mProgram->setVec4(
"uRulerColor", rulerColor);
115 BBOX_VERT,
sizeof(BBOX_VERT),
116 BBOX_FRAG,
sizeof(BBOX_FRAG));
118 mCubeVBO.create(GL_ARRAY_BUFFER, GL_DYNAMIC_DRAW);
119 mCubeVBO.load(0, 8 * 3 *
sizeof(
float));
154 mCubeVBO.load(vertices,
sizeof(vertices));
161 const unsigned int indices[]
163 0, 1, 1, 2, 2, 3, 3, 0,
164 4, 5, 5, 6, 6, 7, 7, 4,
165 0, 4, 1, 5, 2, 6, 3, 7,
168 glEnable(GL_DEPTH_TEST);
170 glDrawElements(GL_LINES, 24, GL_UNSIGNED_INT, indices);
175 const unsigned int indices[]
184 glEnable(GL_CULL_FACE);
185 glDrawElements(GL_TRIANGLES, 36, GL_UNSIGNED_INT, indices);
186 glDisable(GL_CULL_FACE);
209 SCREEN_VERT,
sizeof(SCREEN_VERT),
210 BACKGROUND_FRAG,
sizeof(BACKGROUND_FRAG));
228 glClear(GL_DEPTH_BUFFER_BIT);
254 float planeScale,
float rulerScale,
259 mGroundRenderer->draw(rparams, planeScale, rulerScale, planeColor, rulerColor);
void draw(const RenderParams &rparams, Vec3f p0, Vec3f p1, int type)
Program * mBackgroundProgram
void draw(Vec3f color0, Vec3f color1)
BackgroundRenderer * mBackgroundRenderer
void drawGround(const RenderParams &rparams, float planeScale, float rulerScale=1.f, dyno::Vec4f planeColor={ 0.3, 0.3, 0.3, 0.5 }, dyno::Vec4f rulerColor={ 0.1, 0.1, 0.1, 0.5 })
void drawBBox(const RenderParams &rparams, Vec3f pmin, Vec3f pmax, int type=0)
BBoxRenderer * mBBoxRenderer
GroundRenderer * mGroundRenderer
void drawBackground(Vec3f color0, Vec3f color1)
void draw(const RenderParams &rparams, float planeScale, float rulerScale, dyno::Vec4f planeColor, dyno::Vec4f rulerColor)
static Mesh * Plane(float scale)
static Mesh * ScreenQuad()
static Program * createProgramSPIRV(const void *vs, size_t vs_len, const void *fs, size_t fs_len, const void *gs=0, size_t gs_len=0)
This is an implementation of AdditiveCCD based on peridyno.