2D и 3D Композиция поверхности из 2 различных приложений на Android 2.2 - PullRequest
1 голос
/ 15 ноября 2011

Мне интересно знать и понимать, как 2D-графика и 3D-поверхности сочетаются на Android-Froyo 2.2 или на любой вкус в целом из 2-х различных приложений, например, как поверхности поверхностей Live Wall paper & Launcher комбинируются & отображается. 2D в том смысле, что запускающее приложение, кажется, создает поверхность и рисует на холсте, а последний передает буферы нарисованного холста на поверхность flinger, которая, в свою очередь, записывает их в виде текстур, используя openGLES glTeximage для GPU и бумаги Live Wall, кажется, использует скрипт рендеринга libRS для выполнения вызовов openGLES.

Вопрос заключается в том, как эти две поверхности будут совмещены. Поверхностный флингер объединяет их в 2 отдельных слоя, любое описание того, как драйвер openGLES сделает это, также будет полезно.


Большое спасибо, но я скажу, что снова действие является одиночным, и в этом случае обе верхние и нижние поверхности будут представлены поверхности flinger, и они будут объединены с использованием вызовов openglES в Surface flinger.

GLenum src = mPremultipliedAlpha ? GL_ONE : GL_SRC_ALPHA;
glEnable(GL_BLEND);
glBlendFunc(src, GL_ONE_MINUS_SRC_ALPHA);
glColor4x(0x10000, 0x10000, 0x10000, 0x10000);

Я пытаюсь понять случай, когда есть 2 разных действия, одно из которых использует renderscript / GL10 (я скажу, что это 3D), а другое - рисование, используя вид поверхности на холсте (я скажу, что это 2D). или пользовательский интерфейс)

1 Ответ

0 голосов
/ 15 ноября 2011

Вы можете создать два или более вида поверхности и назначить их одному виду деятельности, используя addContentView() и setContentView.Допустим, вам понадобятся две поверхности: surface_buttom и surface_top.Вы можете сделать:

setContentView(surface_buttom);
addContentView(surface_top);

на свою деятельность.Убедитесь, что фон верхней поверхности создан прозрачным.Или же нижний слой не виден.

...