Воскресенье, 04 Июня 2023, 21:11

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker » Рисование на поверхности(surface)
Рисование на поверхности(surface)
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
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker » Рисование на поверхности(surface)
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2023 Рейтинг