void lazyInitialize()
{

	if (!initialized) {
		kmMat4 identity; //Temporary identity matrix

		//Initialize all 3 stacks
		//modelview_matrix_stack = (km_mat4_stack*) malloc(sizeof(km_mat4_stack));
		km_mat4_stack_initialize(&modelview_matrix_stack);

		//projection_matrix_stack = (km_mat4_stack*) malloc(sizeof(km_mat4_stack));
		km_mat4_stack_initialize(&projection_matrix_stack);

		//texture_matrix_stack = (km_mat4_stack*) malloc(sizeof(km_mat4_stack));
		km_mat4_stack_initialize(&texture_matrix_stack);

		current_stack = &modelview_matrix_stack;
		initialized = 1;

		kmMat4Identity(&identity);

		//Make sure that each stack has the identity matrix
		km_mat4_stack_push(&modelview_matrix_stack, &identity);
		km_mat4_stack_push(&projection_matrix_stack, &identity);
		km_mat4_stack_push(&texture_matrix_stack, &identity);
	}
}
コード例 #2
0
ファイル: matrix.c プロジェクト: mcanthony/webcl-translator
km_mat4_stack_context *lazyInitializeCurrentContext()
{
    km_mat4_stack_context *current_context = (km_mat4_stack_context *)pthread_getspecific(current_context_key);

    assert(current_context != NULL && "No context set");

	if (current_context && !current_context->initialized) {
		kmMat4 identity; /*Temporary identity matrix*/

		/*Initialize all 3 stacks*/
		/*modelview_matrix_stack = (km_mat4_stack*) malloc(sizeof(km_mat4_stack));*/
		km_mat4_stack_initialize(&current_context->modelview_matrix_stack);

		/*projection_matrix_stack = (km_mat4_stack*) malloc(sizeof(km_mat4_stack));*/
		km_mat4_stack_initialize(&current_context->projection_matrix_stack);

		/*texture_matrix_stack = (km_mat4_stack*) malloc(sizeof(km_mat4_stack));*/
		km_mat4_stack_initialize(&current_context->texture_matrix_stack);

		current_context->current_stack = &current_context->modelview_matrix_stack;
		current_context->initialized = 1;

		kmMat4Identity(&identity);

		/*Make sure that each stack has the identity matrix*/
		km_mat4_stack_push(&current_context->modelview_matrix_stack, &identity);
		km_mat4_stack_push(&current_context->projection_matrix_stack, &identity);
		km_mat4_stack_push(&current_context->texture_matrix_stack, &identity);
	}

    return current_context;
}