Как вызвать onDraw () класса, расширяющего GLSurfaceView? - PullRequest
1 голос
/ 02 февраля 2012

Как мне вызвать onDraw () для моего класса, расширяющего GLSurfaceView.Мне нужен холст для рисования жестов пользователя.(FingerPaint.java логика).Имею ввиду, пока мне нужно, чтобы onDrawFrame () рендерера вызывался для других эффектов.Я могу управлять вызовами к обоим методам, поддерживая флаг.Я вызываю invalidate (), но он тоже не может вызвать onDraw ().GLSurfaceView расширяет View, поэтому я подумал, что могу переопределить onDraw () и вызвать его, вызвав invalidate ().Пожалуйста, пролейте немного света.Заранее спасибо Кришна:)

Ответы [ 2 ]

1 голос
/ 02 февраля 2012

Попробуйте позвонить requestRender () из вашего GLSurfaceView. Очевидно, это лучше всего работает при установке режима рендеринга на «RENDERMODE_WHEN_DIRTY». А это значит, что вы не будете выполнять рендеринг непрерывно, так что это может помешать «постоянному» рендерингу, необходимому для ваших эффектов.

Я думаю, что лучшим решением было бы разделить рендеринг между 2 поверхностями наложения и 2 рендерами. Запросите нижнюю поверхность (поверхность пальцевой краски) для визуализации фрейма при каждом взаимодействии пользователя, а на верхней (поверхность gfx) вы рендерите непрерывно. Или поменяйте местами ... все, что работает лучше.

0 голосов
/ 14 июля 2015

Просто вызовите invalidate () и onDraw (), как и обычный View.Холст рисуется поверх области просмотра GLES.

До сих пор я не смог реализовать аннулирование (Rect dirty).Весь вид перерисовывается всегда.

Перед рисованием необходимо установить setWillNotDraw (false).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...