1d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca/* Test sRGB texturing. 2d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca */ 3d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca 4d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca#include "graw_util.h" 5d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca 6d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca 7d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonsecastatic const int WIDTH = 600; 8d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonsecastatic const int HEIGHT = 300; 9d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca 10d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonsecastatic struct graw_info info; 11d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca 12d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonsecastatic struct pipe_resource *texture; 13d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonsecastatic struct pipe_sampler_view *linear_sv, *srgb_sv; 14d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca 15d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca 16d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonsecastruct vertex { 17d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca float position[4]; 18d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca float color[4]; 19d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca}; 20d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca 21d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonsecastatic struct vertex vertices1[] = 22d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca{ 23d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca { { -0.1, -0.9, 0.0, 1.0 }, 24d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca { 1, 1, 0, 1 } }, 25d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca 26d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca { { -0.1, 0.9, 0.0, 1.0 }, 27d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca { 1, 0, 0, 1 } }, 28d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca 29d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca { {-0.9, 0.9, 0.0, 1.0 }, 30d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca { 0, 0, 0, 1 } }, 31d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca 32d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca { {-0.9, -0.9, 0.0, 1.0 }, 33d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca { 0, 1, 0, 1 } }, 34d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca}; 35d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca 36d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca 37d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonsecastatic struct vertex vertices2[] = 38d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca{ 39d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca { { 0.9, -0.9, 0.0, 1.0 }, 40d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca { 1, 1, 0, 1 } }, 41d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca 42d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca { { 0.9, 0.9, 0.0, 1.0 }, 43d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca { 1, 0, 0, 1 } }, 44d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca 45d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca { { 0.1, 0.9, 0.0, 1.0 }, 46d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca { 0, 0, 0, 1 } }, 47d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca 48d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca { { 0.1, -0.9, 0.0, 1.0 }, 49d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca { 0, 1, 0, 1 } }, 50d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca}; 51d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca 52d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca 53d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca 54d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca 55d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonsecastatic void 56d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonsecaset_vertices(struct vertex *verts, unsigned num_verts) 57d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca{ 58d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca struct pipe_vertex_element ve[2]; 59d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca struct pipe_vertex_buffer vbuf; 60d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca void *handle; 61d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca 62d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca memset(ve, 0, sizeof ve); 63d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca 64d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca ve[0].src_offset = Offset(struct vertex, position); 65d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca ve[0].src_format = PIPE_FORMAT_R32G32B32A32_FLOAT; 66d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca ve[1].src_offset = Offset(struct vertex, color); 67d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca ve[1].src_format = PIPE_FORMAT_R32G32B32A32_FLOAT; 68d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca 69d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca handle = info.ctx->create_vertex_elements_state(info.ctx, 2, ve); 70d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca info.ctx->bind_vertex_elements_state(info.ctx, handle); 71d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca 72d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca 73d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca vbuf.stride = sizeof(struct vertex); 74d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca vbuf.buffer_offset = 0; 751a840cc5925f52079916feb2c456816a7a91d627Marek Olšák vbuf.buffer = pipe_buffer_create_with_data(info.ctx, 761a840cc5925f52079916feb2c456816a7a91d627Marek Olšák PIPE_BIND_VERTEX_BUFFER, 771a840cc5925f52079916feb2c456816a7a91d627Marek Olšák PIPE_USAGE_STATIC, 781a840cc5925f52079916feb2c456816a7a91d627Marek Olšák num_verts * sizeof(struct vertex), 791a840cc5925f52079916feb2c456816a7a91d627Marek Olšák verts); 80d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca 81d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca info.ctx->set_vertex_buffers(info.ctx, 1, &vbuf); 82d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca} 83d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca 84d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonsecastatic void set_vertex_shader( void ) 85d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca{ 86d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca void *handle; 87d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca const char *text = 88d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca "VERT\n" 89d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca "DCL IN[0]\n" 90d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca "DCL IN[1]\n" 91d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca "DCL OUT[0], POSITION\n" 92d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca "DCL OUT[1], GENERIC[0]\n" 93d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca " 0: MOV OUT[1], IN[1]\n" 94d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca " 1: MOV OUT[0], IN[0]\n" 95d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca " 2: END\n"; 96d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca 97d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca handle = graw_parse_vertex_shader(info.ctx, text); 98d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca info.ctx->bind_vs_state(info.ctx, handle); 99d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca} 100d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca 101d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonsecastatic void set_fragment_shader( void ) 102d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca{ 103d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca void *handle; 104d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca const char *text = 105d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca "FRAG\n" 106d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca "DCL IN[0], GENERIC[0], PERSPECTIVE\n" 107d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca "DCL OUT[0], COLOR\n" 108d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca "DCL TEMP[0]\n" 109d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca "DCL SAMP[0]\n" 110d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca " 0: TXP TEMP[0], IN[0], SAMP[0], 2D\n" 111d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca " 1: MOV OUT[0], TEMP[0]\n" 112d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca " 2: END\n"; 113d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca 114d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca handle = graw_parse_fragment_shader(info.ctx, text); 115d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca info.ctx->bind_fs_state(info.ctx, handle); 116d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca} 117d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca 118d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca 119d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonsecastatic void draw( void ) 120d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca{ 121d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca union pipe_color_union clear_color; 122d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca 123d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca clear_color.f[0] = 0.5; 124d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca clear_color.f[1] = 0.5; 125d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca clear_color.f[2] = 0.5; 126d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca clear_color.f[3] = 1.0; 127d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca 128d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca info.ctx->clear(info.ctx, PIPE_CLEAR_COLOR, &clear_color, 0, 0); 129d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca 130d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca info.ctx->set_fragment_sampler_views(info.ctx, 1, &linear_sv); 131d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca set_vertices(vertices1, 4); 132d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca util_draw_arrays(info.ctx, PIPE_PRIM_QUADS, 0, 4); 133d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca 134d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca info.ctx->set_fragment_sampler_views(info.ctx, 1, &srgb_sv); 135d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca set_vertices(vertices2, 4); 136d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca util_draw_arrays(info.ctx, PIPE_PRIM_QUADS, 0, 4); 137d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca 138d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca info.ctx->flush(info.ctx, NULL); 139d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca 140d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca graw_util_flush_front(&info); 141d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca} 142d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca 143d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca 144d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonsecastatic void init_tex( void ) 145d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca{ 146d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca#define SIZE 64 147d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca ubyte tex2d[SIZE][SIZE][4]; 148d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca int s, t; 149d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca 150d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca for (s = 0; s < SIZE; s++) { 151d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca for (t = 0; t < SIZE; t++) { 152d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca tex2d[t][s][0] = 0; 153d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca tex2d[t][s][1] = s * 255 / SIZE; 154d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca tex2d[t][s][2] = t * 255 / SIZE; 155d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca tex2d[t][s][3] = 255; 156d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca } 157d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca } 158d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca 159d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca texture = graw_util_create_tex2d(&info, SIZE, SIZE, 160d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca PIPE_FORMAT_B8G8R8A8_UNORM, tex2d); 161d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca 162d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca { 163d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca void *sampler; 164d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca sampler = graw_util_create_simple_sampler(&info, 165d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca PIPE_TEX_WRAP_REPEAT, 166d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca PIPE_TEX_FILTER_NEAREST); 167d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca info.ctx->bind_fragment_sampler_states(info.ctx, 1, &sampler); 168d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca } 169d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca 170d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca /* linear sampler view */ 171d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca { 172d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca struct pipe_sampler_view sv_temp; 173d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca memset(&sv_temp, 0, sizeof sv_temp); 174d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca sv_temp.format = PIPE_FORMAT_B8G8R8A8_UNORM; 175d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca sv_temp.texture = texture; 176d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca sv_temp.swizzle_r = PIPE_SWIZZLE_RED; 177d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca sv_temp.swizzle_g = PIPE_SWIZZLE_GREEN; 178d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca sv_temp.swizzle_b = PIPE_SWIZZLE_BLUE; 179d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca sv_temp.swizzle_a = PIPE_SWIZZLE_ALPHA; 180d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca linear_sv = info.ctx->create_sampler_view(info.ctx, texture, &sv_temp); 181d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca if (linear_sv == NULL) 182d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca exit(0); 183d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca } 184d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca 185d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca /* srgb sampler view */ 186d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca { 187d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca struct pipe_sampler_view sv_temp; 188d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca memset(&sv_temp, 0, sizeof sv_temp); 189d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca sv_temp.format = PIPE_FORMAT_B8G8R8A8_SRGB; 190d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca sv_temp.texture = texture; 191d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca sv_temp.swizzle_r = PIPE_SWIZZLE_RED; 192d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca sv_temp.swizzle_g = PIPE_SWIZZLE_GREEN; 193d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca sv_temp.swizzle_b = PIPE_SWIZZLE_BLUE; 194d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca sv_temp.swizzle_a = PIPE_SWIZZLE_ALPHA; 195d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca srgb_sv = info.ctx->create_sampler_view(info.ctx, texture, &sv_temp); 196d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca if (srgb_sv == NULL) 197d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca exit(0); 198d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca } 199d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca#undef SIZE 200d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca} 201d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca 202d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonsecastatic void init( void ) 203d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca{ 204d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca if (!graw_util_create_window(&info, WIDTH, HEIGHT, 1, FALSE)) 205d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca exit(1); 206d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca 207d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca graw_util_default_state(&info, FALSE); 208d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca 209d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca graw_util_viewport(&info, 0, 0, WIDTH, HEIGHT, 30, 10000); 210d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca 211d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca init_tex(); 212d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca 213d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca set_vertex_shader(); 214d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca set_fragment_shader(); 215d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca} 216d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca 217d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca 218d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonsecaint main( int argc, char *argv[] ) 219d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca{ 220d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca init(); 221d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca 222d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca graw_set_display_func( draw ); 223d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca graw_main_loop(); 224d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca return 0; 225d35d3d612acef1612aaab9a923b8814d4dbb4d9cJosé Fonseca} 226