forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   C++ (http://forum.boolean.name/forumdisplay.php?f=22)
-   -   Clear Engine (Понятный движок) (http://forum.boolean.name/showthread.php?t=18702)

moka 13.11.2013 00:42

Ответ: Clear Engine (Понятный движок)
 
Цитата:

Сообщение от jimon (Сообщение 270066)
представь какая каша в коде получается если у тебя async file io в несколько потоков и коллбек после загрузки, ты просто погрузнешь в мьютексах чтобы правильно потом отработать загруженные файлы

а с проверяющей "хренью" у тебя получается чистый lock-free код, ты обрабатываешь результаты асинхронных операций по мере возможности, и никаких тебе мьютексов

в таком lock-free коде если ты встречаешь место где тебе нужно просто подождать - используешь await подобный паттерн, как в c# http://msdn.microsoft.com/en-us/libr.../hh156528.aspx

libuv в такой ситуации отличное решение. У тебя есть главный поток логики, позади есть процессы но в контролируемых условиях, и обрабатываются независимо, когда готовы - сообщат тебе.
Посмотри как асинхронность устроена в node.js на основе libuv. По сути это одна очередь функций, и задние потоки о которых пользователю платформой не нужно заботиться.
Скейлиться во всех отношениях, никаких lock'ов и простоев в ожиданиях - когда будет готово, нам сообщят.

jimon 13.11.2013 00:47

Ответ: Clear Engine (Понятный движок)
 
Цитата:

Сообщение от moka (Сообщение 270119)
libuv в такой ситуации отличное решение. У тебя есть главный поток логики, позади есть процессы но в контролируемых условиях, и обрабатываются независимо, когда готовы - сообщат тебе.
Посмотри как асинхронность устроена в node.js на основе libuv. По сути это одна очередь функций, и задние потоки о которых пользователю платформой не нужно заботиться.
Скейлиться во всех отношениях, никаких lock'ов и простоев в ожиданиях - когда будет готово, нам сообщят.

посмотри как сделана асинхроность в C# : http://msdn.microsoft.com/en-us/libr.../hh191443.aspx и http://habrahabr.ru/post/139734/

moka 13.11.2013 00:50

Ответ: Clear Engine (Понятный движок)
 
await (C#) == yield (ECMA6)
Но в 98% он не нужен, т.к. есть нормальная event-driven парадигма, и promises.

pozitiffcat 13.11.2013 01:21

Ответ: Clear Engine (Понятный движок)
 
никто случайно не сталкивался, что на айфоне glViewport нужно указывать двойного размера? Если задать параметры что приезжают в
Код:

CGRect screenBound = [[UIScreen mainScreen] bounds];
то вьюпорт будет на четверть экрана - тоесть в 2 раза меньше по обоим осям...

jimon 13.11.2013 01:31

Ответ: Clear Engine (Понятный движок)
 
Цитата:

Сообщение от moka (Сообщение 270123)
await (C#) == yield (ECMA6)
Но в 98% он не нужен, т.к. есть нормальная event-driven парадигма, и promises.

wut ? yield он и в C# yield

Цитата:

Сообщение от pozitiffcat (Сообщение 270129)
никто случайно не сталкивался, что на айфоне glViewport нужно указывать двойного размера? Если задать параметры что приезжают в
Код:

CGRect screenBound = [[UIScreen mainScreen] bounds];
то вьюпорт будет на четверть экрана - тоесть в 2 раза меньше по обоим осям...

self.contentScaleFactor = 2.0f; у вьюшки которая рисует твой GL контекст

SBJoker 13.11.2013 01:31

Ответ: Clear Engine (Понятный движок)
 
ЕМНИП там размеры интерфейса в виртуальных единицах. На ретине отношение виртуальных единиц к пикселям 1:2

pozitiffcat 13.11.2013 01:38

Ответ: Clear Engine (Понятный движок)
 
Цитата:

Сообщение от SBJoker (Сообщение 270131)
ЕМНИП там размеры интерфейса в виртуальных единицах. На ретине отношение виртуальных единиц к пикселям 1:2

задал единичку, но изображение стало какое-то гавеное, и вообще как правильно сделать-то?

SBJoker 13.11.2013 01:42

Ответ: Clear Engine (Понятный движок)
 
Узнавать у системы текущий скейл фактор, и его и устанавливать. Или домножать размеры буфера.

pozitiffcat 13.11.2013 01:46

Ответ: Clear Engine (Понятный движок)
 
Цитата:

Сообщение от SBJoker (Сообщение 270134)
Узнавать у системы текущий скейл фактор, и его и устанавливать. Или домножать размеры буфера.

картинка нормальная получается если вьюпорт делать двойным размером, но это как-то не кроссплатформенно. Если установить скейл фактор изображение угловатое становится

Mr_F_ 13.11.2013 03:04

Ответ: Clear Engine (Понятный движок)
 
Цитата:

какие там могут возникнуть проблемы-то...
ты не представляешь как их много может возникнуть с ним :)

moka 13.11.2013 04:06

Ответ: Clear Engine (Понятный движок)
 
Цитата:

Сообщение от jimon (Сообщение 270130)
wut ? yield он и в C# yield

RTFM!
yield (C#) != yield (ECMA6)

Цитата:

yield is your await keyword.
http://bjouhier.wordpress.com/2013/0...in-javascript/

jimon 13.11.2013 05:20

Ответ: Clear Engine (Понятный движок)
 
Цитата:

Сообщение от moka (Сообщение 270139)

я вот не понимаю тебя, yield return в C# и yield в ECMA6 делает одно и тоже

а именно : c#
Цитата:

public class PowersOf2
{
static void Main()
{
// Display powers of 2 up to the exponent of 8:
foreach (int i in Power(2, 8 ))
{
Console.Write("{0} ", i);
}
}

public static System.Collections.IEnumerable Power(int number, int exponent)
{
int result = 1;

for (int i = 0; i < exponent; i++)
{
result = result * number;
yield return result;
}
}

// Output: 2 4 8 16 32 64 128 256
}
и js1.7 :

Цитата:

function fib() {
var i = 0, j = 1;
while (true) {
yield i;
var t = i;
i = j;
j += t;
}
}

var g = fib();
for (var i = 0; i < 10; i++) {
console.log(g.next());
}
скажи мне в чем разница ? ну кроме вызова .next в js
они полностью одинаковы по функционалу и семантике использования

вот по той ссылке что ты добавил чувак сделал супер либу которая с помощью yield повторяет функционал аналогичный await

если я с помощью микроскопа забиваю гвоздь, то микроскоп можно назвать молотком, но от этого микроскоп микроскопом не перестает быть, так что никогда не путай утилитарную фунциональность, семантику и контекст :)

moka 13.11.2013 05:38

Ответ: Clear Engine (Понятный движок)
 
Цитата:

Сообщение от jimon (Сообщение 270144)
я вот не понимаю тебя, yield return в C# и yield в ECMA6 делает одно и тоже

а именно : c#


и js1.7 :



скажи мне в чем разница ? ну кроме вызова .next в js
они полностью одинаковы по функционалу и семантике использования

вот по той ссылке что ты добавил чувак сделал супер либу которая с помощью yield повторяет функционал аналогичный await

если я с помощью микроскопа забиваю гвоздь, то микроскоп можно назвать молотком, но от этого микроскоп микроскопом не перестает быть, так что никогда не путай утилитарную фунциональность, семантику и контекст :)

Проблема в коллизии имён тут. Но суть yield'а в JS именно в применении как await'а, т.к. это асинхронная парадигма, вот почитай тут:
http://blog.alexmaccaw.com/how-yield...transform-node

Суть как раз использования генераторов в асинхронной модели - идентична вашему await в C#.

pozitiffcat 13.11.2013 10:21

Ответ: Clear Engine (Понятный движок)
 
хм.. похоже про сильные пост-эффекты на мобилках можно забыть. Код типа
Код:

for( i= -4 ;i < 4; i++)
{
      for (j = -3; j < 3; j++)
      {
          sum += texture2D(TEXTURE_DIFFUSE, texcoord + vec2(j, i)*0.004) * 0.27;
      }
}

выдает охринительные тормоза. Слишком много выборок, ну а как иначе!

Mr_F_ 13.11.2013 12:22

Ответ: Clear Engine (Понятный движок)
 
Цитата:

выдает охринительные тормоза. Слишком много выборок, ну а как иначе!
блюр можно делать в 2 пасса, сначала горизонтал, а потом вертикал, будет меньше семплов (но больше записей в текстуру).


Часовой пояс GMT +4, время: 17:17.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot