Exemple #1
0
/* \brief new texture object from file */
GLHCKAPI glhckTexture* glhckTextureNewFromFile(const char *file, const glhckImportImageParameters *importParams, const glhckTextureParameters *params)
{
   glhckTexture *object;
   CALL(0, "%s, %p, %p", file, importParams, params);
   assert(file);

   /* check if texture is in cache */
   if ((object = _glhckTextureCacheCheck(file)))
      goto success;

   if (!(object = glhckTextureNew()))
      goto fail;

   /* copy filename */
   if (!(object->file = _glhckStrdup(file)))
      goto fail;

   /* import image */
   if (_glhckImportImage(object, file, importParams) != RETURN_OK)
      goto fail;

   /* apply texture parameters */
   glhckTextureParameter(object, params);

success:
   RET(0, "%p", object);
   return object;

fail:
   IFDO(glhckTextureFree, object);
   RET(0, "%p", NULL);
   return NULL;
}
Exemple #2
0
void Object::setTexture(std::string const& filename)
{
    glhckTexture* t = glhckTextureNew(filename.data(), 0, nullptr);
    glhckObjectTexture(o, t);
    glhckTextureFree(t);
}
Exemple #3
0
      cameraPos.z = -40.0f;
   } else if ((cube = glhckCubeNew(1.0f))) {
      glhckObjectMaterial(cube, material);
      cameraPos.z = -20.0f;
   } else return EXIT_FAILURE;

#define SHADOW 0
#if SHADOW
   glhckShader *shader = glhckShaderNew(NULL, "VSM.GLhck.Lighting.ShadowMapping.Unpacking.Fragment", NULL);
   glhckShader *depthShader = glhckShaderNew(NULL, "VSM.GLhck.Depth.Packing.Fragment", NULL);
   glhckShader *depthRenderShader = glhckShaderNew(NULL, "VSM.GLhck.DepthRender.Unpacking.Fragment", NULL);
   glhckShaderSetUniform(shader, "ShadowMap", 1, &((int[]){1}));

   int sW = 1024, sH = 1024;
   glhckRenderbuffer *depthBuffer = glhckRenderbufferNew(sW, sH, GLHCK_DEPTH_COMPONENT16);
   glhckTexture *depthColorMap = glhckTextureNew();
   glhckTextureCreate(depthColorMap, GLHCK_TEXTURE_2D, 0, sW, sH, 0, 0, GLHCK_RGBA, GLHCK_DATA_UNSIGNED_BYTE, 0, NULL);
   glhckFramebuffer *fbo = glhckFramebufferNew(GLHCK_FRAMEBUFFER);
   glhckFramebufferAttachTexture(fbo, depthColorMap, GLHCK_COLOR_ATTACHMENT0);
   glhckFramebufferAttachRenderbuffer(fbo, depthBuffer, GLHCK_DEPTH_ATTACHMENT);
   glhckFramebufferRecti(fbo, 0, 0, sW, sH);

   glhckObject *screen = glhckSpriteNew(depthColorMap, 128, 128);
   glhckObjectShader(screen, depthRenderShader);
   glhckObjectMaterialFlags(screen, 0);
#endif

   glhckObject *plane = glhckPlaneNew(200.0f, 200.0f);
   glhckObjectMaterial(plane, material);
   glhckObjectPositionf(plane, 0.0f, -0.1f, 0.0f);
   glhckObjectRotationf(plane, -90.0f, 0.0f, 0.0f);