src/2d.c

changeset 204
be5cf64b5c29
parent 189
2c063b225183
equal deleted inserted replaced
203:1883bdc4fb20 204:be5cf64b5c29
32 #include "ascension/error.h" 32 #include "ascension/error.h"
33 #include "ascension/shader.h" 33 #include "ascension/shader.h"
34 34
35 #include <assert.h> 35 #include <assert.h>
36 36
37 // TODO: add "origin" arguments to 2D primitives
38
37 typedef struct asc_rectangle_shader_s { 39 typedef struct asc_rectangle_shader_s {
38 AscShaderProgram program; 40 AscShaderProgram program;
39 asc_uniform_loc color; 41 asc_uniform_loc color;
40 asc_uniform_loc border_color; 42 asc_uniform_loc border_color;
41 asc_uniform_loc size; 43 asc_uniform_loc size;
186 // use the active ink 188 // use the active ink
187 rectangle->border_color = rectangle->color; 189 rectangle->border_color = rectangle->color;
188 } 190 }
189 191
190 AscSceneNode *node = &rectangle->node; 192 AscSceneNode *node = &rectangle->node;
191 asc_transform_identity(node->transform); 193 node->position = ASC_VEC3F(pos_x, pos_y, ASC_SCENE_2D_DEPTH_OFFSET);
192 asc_transform_translate3f(node->transform, 194 node->scale = ASC_VEC3F_1;
193 ASC_VEC3F(pos_x, pos_y, ASC_SCENE_2D_DEPTH_OFFSET)); 195 asc_mat4f_unit(node->rotation);
194 node->render_group = asc_context.ink.alpha < 255 196 node->render_group = asc_context.ink.alpha < 255
195 ? ASC_RENDER_GROUP_2D_BLEND 197 ? ASC_RENDER_GROUP_2D_BLEND
196 : ASC_RENDER_GROUP_2D_OPAQUE; 198 : ASC_RENDER_GROUP_2D_OPAQUE;
197 node->update_func = asc_rectangle_update; 199 node->update_func = asc_rectangle_update;
198 node->destroy_func = asc_rectangle_destroy; 200 node->destroy_func = asc_rectangle_destroy;
342 // use the active ink 344 // use the active ink
343 ellipsis->border_color = ellipsis->color; 345 ellipsis->border_color = ellipsis->color;
344 } 346 }
345 347
346 AscSceneNode *node = &ellipsis->node; 348 AscSceneNode *node = &ellipsis->node;
347 asc_transform_identity(node->transform); 349 node->position = ASC_VEC3F(pos_x, pos_y, ASC_SCENE_2D_DEPTH_OFFSET);
348 asc_transform_translate3f(node->transform, 350 node->scale = ASC_VEC3F_1;
349 ASC_VEC3F(pos_x, pos_y, ASC_SCENE_2D_DEPTH_OFFSET)); 351 asc_mat4f_unit(node->rotation);
350 node->render_group = asc_context.ink.alpha < 255 352 node->render_group = asc_context.ink.alpha < 255
351 ? ASC_RENDER_GROUP_2D_BLEND 353 ? ASC_RENDER_GROUP_2D_BLEND
352 : ASC_RENDER_GROUP_2D_OPAQUE; 354 : ASC_RENDER_GROUP_2D_OPAQUE;
353 node->update_func = asc_ellipsis_update; 355 node->update_func = asc_ellipsis_update;
354 node->destroy_func = asc_ellipsis_destroy; 356 node->destroy_func = asc_ellipsis_destroy;

mercurial