Сообщение Re[2]: Как использовать graphics из нативного кода от 29.10.2016 12:27
Изменено 29.10.2016 12:32 goldfish
ЗдравствуйтеУ вас должны быть "красивые" данные, мы их получали, естественно, из бекенд части, т.е. из С++.
Как рационально передавать данные из нативного кода в tiscript, как минимизировать накладные расходы при передаче?
Если для каждой вершины вызывается функция из нативного кода, это правильно?
Как можно ускорить передачу?
tiscript:
function drawChart(gfx)
{
var x1, y1, x2, y2, pos;
gfx.pushLayer(#client-box);
pos = get_data(0);
x1 = pos[0] * scaleX + dx;
y1 = pos[1] * scaleY + dy;
for(var n = 1; n < count; n++)
{
pos = get_data(n);
x2 = pos[0] * scaleX + dx;
y2 = pos[1] * scaleY + dy;
gfx.line( x1, y1, x2, y2 );
x1 = x2;
y1 = y2;
}
}
нативный код:
tiscript::value TISAPI get_data_native(tiscript::VM* vm)
{
int index;
tiscript::args(vm) >> tiscript::args::skip >> tiscript::args::skip >> index;
tiscript::value arr_dataXY = tiscript::create_array(vm, 2);
tiscript::set_elem( vm, arr_dataXY, 0, tiscript::v_float(data[index * 2]) );
tiscript::set_elem( vm, arr_dataXY, 1, tiscript::v_float(data[index * 2 + 1]) );
return arr_dataXY;
}
static tiscript::method_def get_data_md("get_data", get_data_native);
Re[2]: Как использовать graphics из нативного кода
ЗдравствуйтеУ вас должны быть "красивые" данные, мы их получали, естественно, из бекенд части, т.е. из С++.
Как рационально передавать данные из нативного кода в tiscript, как минимизировать накладные расходы при передаче?
Если для каждой вершины вызывается функция из нативного кода, это правильно?
Как можно ускорить передачу?
tiscript:
function drawChart(gfx)
{
var x1, y1, x2, y2, pos;
gfx.pushLayer(#client-box);
pos = get_data(0);
x1 = pos[0];
y1 = pos[1];
for(var n = 1; n < count; n++)
{
pos = get_data(n);
x2 = pos[0];
y2 = pos[1];
gfx.line( x1, y1, x2, y2 );
x1 = x2;
y1 = y2;
}
}
нативный код:
tiscript::value TISAPI get_data_native(tiscript::VM* vm)
{
int index;
tiscript::args(vm) >> tiscript::args::skip >> tiscript::args::skip >> index;
tiscript::value arr_dataXY = tiscript::create_array(vm, 2);
tiscript::set_elem( vm, arr_dataXY, 0, tiscript::v_float(data[index * 2]) );
tiscript::set_elem( vm, arr_dataXY, 1, tiscript::v_float(data[index * 2 + 1]) );
return arr_dataXY;
}
static tiscript::method_def get_data_md("get_data", get_data_native);