AicedorMan | Дата: Воскресенье, 27 Января 2013, 14:29 | Сообщение # 1 |
был не раз
Сейчас нет на сайте
| Добрый день, форумчане. Появилась довольно большая проблема(о ней я писал в теме Game Maker вопрос-ответ, но ответа не получил, видно неправильно описал задачу). У меня есть загрузчик данных из файла(грузит координаты ТРЁХ точек, тем самым образовывая треугольный примитив). Далее по процессу все треугольные примитивы отрисовываются в сурфейсе посредством цикла, от самой первой до последней. Для каждого треугольника создаётся свой сурфейс, а я хочу сделать чтобы все сурфейсы присутствували на одном ХОЛСТЕ. Как это сделать?
Код из скрипта прилагаю ниже: Код //ЗДЕСЬ ИДЁТ ЗАГРУЗКА ДАННЫХ ИЗ ФАЙЛА file=argument1+argument0; smooth=argument2;//false;//показыват, производить ли сглаживание текстр(для текстур актуально, для основного колорита нет) section_width = 32 section_height = 32 texture_set_repeat(true) for(i = 0;i <= sprite_get_number( texture_spr);i += 1) textures[i] = sprite_get_texture(texture_spr,i); file =file_text_open_read(file)
body_number = real(file_text_read_string(file)) file_text_readln( file)
for(body=0;body<body_number;body+=1) {
body_texture[body] = real(file_text_read_string(file)); file_text_readln(file) body_hardness[body] = real(file_text_read_string(file)); file_text_readln(file) //color red[body] = real(file_text_read_string(file)); file_text_readln(file) green[body] = real(file_text_read_string(file)); file_text_readln(file) blue[body] = real(file_text_read_string(file)); file_text_readln(file) //other parameters layer[body] = real(file_text_read_string(file)); file_text_readln(file) alpha[body] = real(file_text_read_string(file)); file_text_readln(file)
vertex_number[body] = 3
for(vertex = 0;vertex<vertex_number[body];vertex += 1) { px[body,vertex] = real(file_text_read_string(file)) file_text_readln(file) py[body,vertex] = real(file_text_read_string(file)) file_text_readln(file) pcolour[body,vertex] = make_color_rgb(red[body],green[body],blue[body]); //здесь можно сделать смешивание цвета с тексстурами };}
file_text_close(file)
temp = instance_create(minx[body_],miny[body],obj_terrain); //ЗДЕСЬ НАЧИНАЕТСЯ ОТРИСОВКА for(body=0;body<body_number;body+=1) { minx[body] = room_width miny[body] = room_height maxx[body] = 0 maxy[body] = 0
for(vertex=0;vertex<vertex_number[body];vertex+=1) { if (px[body,vertex] > maxx[body]) maxx[body] = px[body,vertex] if (py[body,vertex] > maxy[body]) maxy[body] = py[body,vertex] if (px[body,vertex] < minx[body]) minx[body] = px[body,vertex] if (py[body,vertex] < miny[body]) miny[body] = py[body,vertex];}
//СОЗДАЁТСЯ СУРФЕЙС И ТОЧКИ РИСУЮТСЯ ТАМ self_surface = surface_create(maxx[body]-minx[body],maxy[body]-miny[body]+1)
surface_set_target(temp.self_surface) draw_clear(c_fuchsia)
draw_primitive_begin(pr_trianglestrip) for(vertex=0;vertex<vertex_number[body];vertex+=1) { draw_vertex_color(px[body,vertex]-minx[body],py[body,vertex]-miny[body],/*px[body,vertex]/room_width*(room_width/128),py[body,vertex]/room_height*(room_height/128),*/pcolour[body,vertex],alpha[body]);} draw_primitive_end() surface_reset_target()
//вот тут назначаем background для объекта. background состоит из всего сурфейса back = background_create_from_surface(self_surface,0,0,maxx[body]-minx[body],maxy[body]-miny[body]+1,true,smooth,) }
Сообщение отредактировал AicedorMan - Воскресенье, 27 Января 2013, 14:31 |
|
| |