Réponse
L'une des situations où vous pourriez obtenir cet avertissement dans Xcode est lors de l'utilisation d'une application qui utilise les shaders comme les Cartes app avec un MKMapView
. Vous verrez que la carte fonctionne comme prévu, sans que l'avertissement sur un périphérique réel avec de vrais matériel/système d'exploitation natif.
Dans la carte sim de l' SolidRibbonShader
fragment shader n'est pas en mesure de lire la sortie de l' v_gradient
vertex shader, probablement parce qu'il est en beta ou il pourrait y avoir une incompatibilité entre Xcode version SIM et version. Cependant, les shaders sont reconnues sur un périphérique réel.
Explication
Ces shaders appartiennent à l' OpenGL Pipeline de Rendu. Le Pipeline de Rendu est la séquence d'étapes OpenGL prend lors du rendu des objets.
Le pipeline de rendu responsable pour des choses telles que l'application de la texture, de la conversion des sommets à la droite système de coordonnées et afficher les caractères sur l'écran etc.
Il y a six étapes dans ce pipeline.
- Par Sommet De L'Opération
- Primitive De L'Assemblée
- Primitives De Traitement
- Le tramage
- Fragment De Traitement
- Par-Fragment De Fonctionnement
Enfin, une image apparaît sur l'écran de votre appareil. Ces six étapes sont appelés le Pipeline de Rendu OpenGL et toutes les données utilisées pour le rendu doit passer par là.
Qu'est ce qu'un shader?
Un shader est un programme qui vous, qui vit dans le GPU. Un shader est écrit dans un langage graphique appelé OpenGL Shading Language(GLSL).
Un shader qui prend la place de deux étapes importantes dans le Pipeline de Rendu OpenGL: Per-Vertex de Traitement et Par Traitement des fragments de la scène. Il y en a un shader pour chacune de ces deux étapes.
Le but ultime de l' Vertex Shader
est de fournir à la transformation finale des sommets du maillage pour le pipeline de rendu. L'objectif de l' Fragment shader
est de fournir la Coloration et la Texture de données pour chaque pixel de partir pour le framebuffer.
Vertex shaders
transformer les sommets d'un triangle à partir d'un modèle local de système de coordonnées à la position de l'écran. Fragment shaders
calculer la couleur d'un pixel à l'intérieur d'un triangle pixellisées sur l'écran.
Séparer Shader Objets d'accélérer la Compilation et la Liaison
De nombreux OpenGL ES aux applications d'utiliser plusieurs vertex et fragment shaders, et il est souvent utile de réutiliser le même fragment shader avec différents vertex shaders , ou vice versa. Parce que le coeur OpenGL ES spécification exige un vertex et fragment shader pour être reliés à un seul programme de shaders, le mélange et l'appariement des shaders résultats dans un grand nombre de programmes, l'accroissement total de shader compiler et lier de temps lors de l'initialisation de votre application.