/* \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; }
void Object::setTexture(std::string const& filename) { glhckTexture* t = glhckTextureNew(filename.data(), 0, nullptr); glhckObjectTexture(o, t); glhckTextureFree(t); }
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);