Я разрабатываю сферу, которая должна отображать текст в определенных позициях. Я попробовал это с CBFG и его API, но я просто не мог видеть текст в фиксированной позиции на экране. Но мне нужен динамический текст, который я могу перемещать с помощью onTouchListener. С моей сферой это работает нормально, также с растровым изображением на ней, но как я могу сделать это с текстом?

0
user664897 19 Дек 2011 в 20:12
2
Звучит так, как будто вы хотите сгенерировать текстуру во время выполнения, содержащую визуализированный текст, а затем поместить сгенерированную текстуру на сферу. вам нужно преобразовать текст в растровое изображение, а затем использовать его в качестве текстуры на сфере.
 – 
Nerdtron
19 Дек 2011 в 20:14
Ммх хорошо, но мне нужно сопоставить положение текста и положение на сфере (зависит от степени, как компас).. как это возможно? Есть хороший пример?
 – 
user664897
19 Дек 2011 в 20:27
Вы управляете положением/ориентацией текстуры на сфере, используя координаты текстуры. координаты текстуры назначают места в текстуре вершинам геометрии. вероятно, любой образец наложения текстуры должен помочь вам начать. вам понадобится информация о сопоставлении текстуры со сферой, о координатах текстуры для управления тем, как текстура сопоставляется со сферой, а также информация о рендеринге в изображение текстуры во время выполнения.
 – 
Nerdtron
19 Дек 2011 в 21:02
Хорошо, это звучит логично. Может быть, у вас есть хороший пример для этого?
 – 
user664897
20 Дек 2011 в 12:23
У меня нет ни одного, который точно покрывает то, что вы пытаетесь сделать. Возможно, вы захотите ознакомиться с учебными пособиями NeHe здесь. Я полагаю, что есть учебник по наложению текстур и учебник по рисованию текста. Я сам сделал текст на сфере, хотя мне не нужен был точный контроль, так что я знаю, что описанный мной общий подход верен. Ищите примеры наложения текстур и выполняйте рендеринг в текстуру.
 – 
Nerdtron
20 Дек 2011 в 16:11

1 ответ

Я решил свою проблему:

TextView textV = new TextView(context);
        LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(128, 128);
        textV.setLayoutParams(layoutParams);
        textV.setTextColor(Color.WHITE);
        textV.setBackgroundColor(Color.TRANSPARENT);
        textV.setGravity(Gravity.CENTER);
        textV.setText(text);

        textV.setDrawingCacheEnabled(true);
        Bitmap b = Bitmap.createBitmap( textV.getLayoutParams().width, textV.getLayoutParams().height, Bitmap.Config.ARGB_8888);                
        Canvas c = new Canvas(b);
        textV.layout(0, 0, textV.getLayoutParams().width, textV.getLayoutParams().height);
        textV.draw(c);
        textV.setDrawingCacheEnabled(false);

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

0
user664897user664897 20 Дек 2011 в 16:29