| Linha 11: | Linha 11: | ||
= Código = | = Código = | ||
void | void RenderFrame (int n, const struct mdl_model_t *mdl) | ||
RenderFrame (int n, const struct mdl_model_t *mdl) | |||
{ | { | ||
int i, j; | int i, j; | ||
Edição das 19h04min de 26 de setembro de 2017
Conceito
Programação em renderização é o processo de geração de uma imagem a partir de um modelo por meio de um software. No contexto da renderização gráfica, a programação em renderização refere-se a um processo de renderização que não depende dos ASICs de hardware gráfico, como uma placa gráfica. A renderização ocorre inteiramente na CPU. Renderizar tudo com a CPU tem a principal vantagem de não se restringir às capacidades do hardware gráfico.
A renderização é usada na arquitetura, jogos e filmes. Renderizar é o último passo em um processo de animação, e dá a aparência final aos modelos e animação com efeitos visuais como sombreamento, mapeamento de texturas, sombras, reflexos e borrões de movimento.
Softwares
Alguns softwares que são usados para esta finalidade são: OpenGL e DirectX. Alguns dos softwares que usam a programação em renderização são: 3ds Max, Maya, CINEMA 4D, Blender, Adobe Photoshop, Gimp, Corel, entre outros. E algumas das linguagens de programação mais usadas para tal processo são: C, C++, C#, Haskell, JavaScript.
Descrever os softwares usados para esta finalidade. Detalhar, se existir, linguagens, banco de dados e frameworks.
Código
void RenderFrame (int n, const struct mdl_model_t *mdl) {
int i, j;
GLfloat s, t;
vec3_t v;
struct mdl_vertex_t *pvert;
/* Check if n is in a valid range */
if ((n < 0) || (n > mdl->header.num_frames - 1))
return;
/* Enable model's texture */
glBindTexture (GL_TEXTURE_2D, mdl->tex_id[mdl->iskin]);
/* Draw the model */
glBegin (GL_TRIANGLES);
/* Draw each triangle */
for (i = 0; i < mdl->header.num_tris; ++i)
{
/* Draw each vertex */ for (j = 0; j < 3; ++j) { pvert = &mdl->frames[n].frame.verts[mdl->triangles[i].vertex[j]];
/* Compute texture coordinates */ s = (GLfloat)mdl->texcoords[mdl->triangles[i].vertex[j]].s; t = (GLfloat)mdl->texcoords[mdl->triangles[i].vertex[j]].t;
if (!mdl->triangles[i].facesfront && mdl->texcoords[mdl->triangles[i].vertex[j]].onseam) { s += mdl->header.skinwidth * 0.5f; /* Backface */ }
/* Scale s and t to range from 0.0 to 1.0 */ s = (s + 0.5) / mdl->header.skinwidth; t = (t + 0.5) / mdl->header.skinheight;
/* Pass texture coordinates to OpenGL */ glTexCoord2f (s, t);
/* Normal vector */ glNormal3fv (anorms_table[pvert->normalIndex]);
/* Calculate real vertex position */ v[0] = (mdl->header.scale[0] * pvert->v[0]) + mdl->header.translate[0]; v[1] = (mdl->header.scale[1] * pvert->v[1]) + mdl->header.translate[1]; v[2] = (mdl->header.scale[2] * pvert->v[2]) + mdl->header.translate[2];
glVertex3fv (v); }
} glEnd ();
}
Diagrama de Casos de Uso
Desenhar ou plotar os requisitos funcionais de uma aplicação.
Interações com as tecnologias
Incluir links (internos ou externos) temas que tem relação com este, explicando detalhes sobre. Limite de 3 internos e 2 externos.
Informações adicionais
Descrever detalhes a mais sobre esse tema.
Referências bibliográficas
Relacionar aqui as referências bibliográficas no padrão ABNT. Bases de procura: Artigos, publicações acadêmicas, revistas e sites de fornecedores