He estado convirtiendo mi propio marco personal OGLES 2.0 para aprovechar la funcionalidad agregada por el nuevo marco iOS 5 GLKit
.iOS 5 + GLKView: ¿Cómo acceder a los datos RGB de píxeles para la selección de vértices basada en colores?
Después de resultados agradables, ahora deseo implementar el mecanismo de selección basado en el color descrito here. Para esto, debe acceder al búfer posterior para recuperar un valor de RGBA de píxel tocado, que luego se utiliza como un identificador único para un objeto de vértice/primitiva/visualización. Por supuesto, esto requiere una coloración temporal única de todos los vértices/primitivos/objetos de visualización.
tengo dos preguntas, y yo estaría muy agradecido por la asistencia, ya sea con:
tengo acceso a un
GLKViewController
,GLKView
,CAEAGLLayer
(delGLKView
) y unEAGLContext
. También tengo acceso a todos los comandos relacionados con el buffer OGLES 2.0 . ¿Cómo los combino para identificar el color de un píxel en el EAGLContexto que estoy tocando en la pantalla?Dado que yo estoy usando Vertex Buffer Objects hacer mi traducción, hay una manera ordenada para anular el color proporcionado a mi sombreado de vértices la que en primer lugar no implique la modificación de vértice tamponada (color) atributos, y en segundo lugar, ¿no implica la adición de una declaración IF en el sombreador de vértices?
supongo que la respuesta a (2) es "no", pero por razones de rendimiento y código no renovar ardua pensé que aconsejable consultar con alguien con más experiencia.
Cualquier sugerencia será recibida con gratitud. Gracias por su tiempo
ACTUALIZACIÓN
Bueno, yo ahora saben leer datos de píxeles de la memoria intermedia de trama activa utilizando glReadPixels usted. Así que supongo que solo tengo que hacer el renderizado especial de "colores únicos" en el búfer posterior, cambiar brevemente a él y leer los píxeles, luego volver a encenderlo. Esto inevitablemente creará un parpadeo visual, pero supongo que es la manera más fácil; ciertamente más rápido (y más sensato) que crear un CGImageContextRef
desde una instantánea de pantalla y analizar de esa manera.
Aún así, cualquier consejo sobre el buffer de la parte de atrás sería muy apreciado.
he terminado todo el mecanismo de separación ahora y funciona un regalo :) Hurra! – KomodoDave
Esto realmente funciona brillantemente, gracias por publicar! – todd412
De nada :) – KomodoDave