1
我有一個基本的模板陰影在我的遊戲引擎功能。我試圖變形基於照明方向上的影子,這是我有:OpenGL的:變形(規模)模板黑影從光源
/*
* @brief Applies translation, rotation and scale for the shadow of the specified
* entity. In order to reuse the vertex arrays from the primary rendering
* pass, the shadow origin must transformed into model-view space.
*/
static void R_RotateForMeshShadow_default(const r_entity_t *e) {
vec3_t origin, delta;
if (!e) {
glPopMatrix();
return;
}
R_TransformForEntity(e, e->lighting->shadow_origin, origin);
VectorSubtract(e->lighting->shadow_origin, e->origin, delta);
const vec_t scale = 1.0 + VectorLength(delta)/LIGHTING_MAX_SHADOW_DISTANCE;
/*const vec_t dot = DotProduct(e->lighting->shadow_normal, e->lighting->dir);
const vec_t sy = sin(Radians(e->angles[YAW]));
const vec_t cy = cos(Radians(e->angles[YAW]));*/
glPushMatrix();
glTranslatef(origin[0], origin[1], origin[2] + 1.0);
glRotatef(-e->angles[PITCH], 0.0, 1.0, 0.0);
glScalef(scale, scale, 0.0);
}
我註釋掉地平面(shadow_normal)和照明方向的點積,如以及模型偏航的罪惡和成因,因爲雖然我非常肯定他們是我需要增加陰影的比例,但我不知道正確的公式是什麼產生透視正確的變形。對於更好地理解預測的人來說,這可能是孩子們的玩法。對我而言,我在黑暗中刺傷。