Beispiel #1
0
/* \brief set shader for render pass */
GLHCKAPI void glhckRenderPassShader(glhckShader *shader)
{
   GLHCK_INITIALIZED();
   CALL(2, "%p", shader);
   if (GLHCKRP()->shader) glhckShaderFree(GLHCKRP()->shader);
   if (shader) GLHCKRP()->shader = glhckShaderRef(shader);
   else GLHCKRP()->shader = NULL;
}
Beispiel #2
0
/* \brief set clear color to render */
GLHCKAPI void glhckRenderClearColor(const glhckColorb *color)
{
   GLHCK_INITIALIZED();
   CALL(2, "%p", color);
   if (!_glhckRenderInitialized()) return;
   GLHCKRA()->clearColor(color);
   memcpy(&GLHCKRP()->clearColor, color, sizeof(glhckColorb));
}
Beispiel #3
0
/* \brief set renderer's viewport */
GLHCKAPI void glhckRenderViewport(const glhckRect *viewport)
{
   kmMat4 ortho;
   GLHCK_INITIALIZED();
   CALL(1, RECTS, RECT(viewport));
   assert(viewport->x >= 0 && viewport->y >= 0 && viewport->w > 0 && viewport->h > 0);
   if (!_glhckRenderInitialized()) return;

   /* set viewport on render */
   GLHCKRA()->viewport(viewport->x, viewport->y, viewport->w, viewport->h);
   memcpy(&GLHCKRP()->viewport, viewport, sizeof(glhckRect));

   /* update orthographic matrix */
   kmMat4OrthographicProjection(&ortho, viewport->x, viewport->w, viewport->h, viewport->y, -1.0f, 1.0f);
   GLHCKRA()->setOrthographic(&ortho);
   memcpy(&GLHCKRD()->view.orthographic, &ortho, sizeof(kmMat4));
}
Beispiel #4
0
/* \brief set needed state from pass data */
static void rPassState(void)
{
   /* front face */
   GLPOINTER()->state.frontFace = GLHCKRP()->frontFace;

   /* cull face */
   GLPOINTER()->state.cullFace = GLHCKRP()->cullFace;

   /* disabled pass bits override the above.
    * it means that we don't want something for this render pass. */
   if (!(GLHCKRP()->flags & GLHCK_PASS_DEPTH))
      GLPOINTER()->state.flags &= ~GL_STATE_DEPTH;
   if (!(GLHCKRP()->flags & GLHCK_PASS_CULL))
      GLPOINTER()->state.flags &= ~GL_STATE_CULL;
   if (!(GLHCKRP()->flags & GLHCK_PASS_BLEND))
      GLPOINTER()->state.flags &= ~GL_STATE_BLEND;
   if (!(GLHCKRP()->flags & GLHCK_PASS_TEXTURE))
      GLPOINTER()->state.flags &= ~GL_STATE_TEXTURE;
   if (!(GLHCKRP()->flags & GLHCK_PASS_DRAW_OBB))
      GLPOINTER()->state.flags &= ~GL_STATE_DRAW_OBB;
   if (!(GLHCKRP()->flags & GLHCK_PASS_DRAW_AABB))
      GLPOINTER()->state.flags &= ~GL_STATE_DRAW_AABB;
   if (!(GLHCKRP()->flags & GLHCK_PASS_DRAW_SKELETON))
      GLPOINTER()->state.flags &= ~GL_STATE_DRAW_SKELETON;
   if (!(GLHCKRP()->flags & GLHCK_PASS_DRAW_WIREFRAME))
      GLPOINTER()->state.flags &= ~GL_STATE_DRAW_WIREFRAME;
   if (!(GLHCKRP()->flags & GLHCK_PASS_LIGHTING))
      GLPOINTER()->state.flags &= ~GL_STATE_LIGHTING;

   /* pass blend override */
   if (GLHCKRP()->blenda != GLHCK_ZERO || GLHCKRP()->blendb != GLHCK_ZERO) {
      GLPOINTER()->state.flags |= GL_STATE_BLEND;
      GLPOINTER()->state.blenda = GLHCKRP()->blenda;
      GLPOINTER()->state.blendb = GLHCKRP()->blendb;
   }

   /* overdraw state */
   if (!(GLHCKRP()->flags & GLHCK_PASS_OVERDRAW)) {
      GLPOINTER()->state.flags &= ~GL_STATE_OVERDRAW;
   } else {
      GLPOINTER()->state.flags &= ~GL_STATE_TEXTURE;
      GLPOINTER()->state.flags &= ~GL_STATE_LIGHTING;
      GLPOINTER()->state.flags |= GL_STATE_OVERDRAW;
      GLPOINTER()->state.flags |= GL_STATE_BLEND;
      GLPOINTER()->state.blenda = GLHCK_ONE;
      GLPOINTER()->state.blendb = GLHCK_ONE;
   }

   GLPOINTER()->state.attrib[GLHCK_ATTRIB_TEXTURE] = (GLPOINTER()->state.flags & GL_STATE_TEXTURE);
}
Beispiel #5
0
/* \brief set render pass cull face side */
GLHCKAPI void glhckRenderCullFace(glhckCullFaceType face)
{
   GLHCK_INITIALIZED();
   CALL(2, "%d", face);
   GLHCKRP()->cullFace = face;
}
Beispiel #6
0
/* \brief set render pass front face orientation */
GLHCKAPI void glhckRenderFrontFace(glhckFaceOrientation orientation)
{
   GLHCK_INITIALIZED();
   CALL(2, "%d", orientation);
   GLHCKRP()->frontFace = orientation;
}
Beispiel #7
0
/* \brief set render pass flags */
GLHCKAPI void glhckRenderPass(unsigned int flags)
{
   GLHCK_INITIALIZED();
   CALL(2, "%u", flags);
   GLHCKRP()->flags = flags;
}