Я делаю путь на основе игры, используя cocos2d 2.0, который будет произвольно генерировать путь (кривизну) для игрока. Этот путь был создан с использованием box2d's b2EdgeShape. Я хочу, чтобы поместить спрайт ниже этого пути, маршрут я принял это:Создайте спрайт в соответствии с box2d path
Спрайт будет показано ниже пути будет непрерывно повторяться, высота которого всегда будет больше, чем высота пути (Parallax фон)
белый спрайт впишется ниже пути с помощью CCRenderTexture (моего вопроса)
фрагмента шейдеры будут сравнивать альфа значение белого спрайта с спрайтом я должен показать и умножьте оба значения. Для каждого пикселя, где должен быть показан спрайт, значение альфа после умножения будет 1, и, надеюсь, я смогу добиться эффекта, который я ищу.
Как сделать этот белый спрайт идеально подходящим под дорожкой, созданной с использованием CCRenderTexture. Я попытался следовать учебнику Tiny Wings по RayWenderlich, но этот учебник основан на OpenGL ES 1.1 и имеет некоторые фиксированные функции конвейера, которые я не могу перенести в OpenGL 2.0 (я не очень хорошо знаю OpenGL для начала). Я бы предпочел использовать cocos2d 2.0, который имеет OpenGL 2.0. Я работал над шейдером фрагментов, используя статический белый спрайт, и этот подход может работать, если я могу постоянно получать этот белый цвет под дорогой. Может ли кто-нибудь указать мне в правильном направлении? Любая помощь будет оценена :)
Я немного смущен, поэтому вы говорите, что альфа-маска не обязательно должна быть CCRenderTexture? Если это не так, то как я буду сравнивать альфа-значения в другом шейдере фрагмента для маскировки? Если это CCRenderTexture, тогда я должен сгенерировать его с помощью метода Рэя, то есть вместо генерации случайных цветов, я должен сгенерировать белый цвет 1.0,1.0,1.0,1.0? –
Извините, я не понял, что вы пытались мне сказать раньше, я немного изучил шейдеры, и теперь я использую kCCShader_Position_uColor вместо того, что вы сказали мне. Теперь я получаю сплошной белый цвет под дорогой. Этот шейдер имеет однородную переменную u_color, а шейдер фрагмента отображает этот цвет. Но я не понимаю, как я получаю этот белый цвет? У меня нет этого кода в моем проекте, который больше генерировал эти CCRenderTextures, я просто создаю простой путь, который не имеет цвета в нем, и показывает b2EdgeShape, когда я включаю Debug Draw. –
Я говорю вам, что вам не нужна альфа-маска для этого (и, вероятно, не хочу). Если вы посмотрите в разделе учебника Рэя «Рисование холма», вы увидите, что он заполняет треугольники земной текстурой (вершины треугольников - это вершины из его кривой). – Pat