Question : Problèmes avec l'amortisseur de pochoir d'Opengl

Bonjour, le
I AM ayant l'ennui using l'amortisseur de pochoir dans OpenGL.

Basically que la version simple de mon problème est this.

I ont un quadruple qui peut être considéré comme surface couverte une « principale » de rectangle. J'ai également un certain nombre de polygones plats se reposer sur la surface couverte à la même taille ainsi ils sont coplanaires et souffrent de z fighting.

To contournent ceci sans couper réellement ces polygones hors de la surface couverte principale, j'utilisent le pochoir buffer.

I font également ne pas être un certain nombre d'autres formes ces les mai ou mai transparentes. Ceux-ci ne sont pas limités à la surface couverte ainsi pourraient être, par exemple, les toits, le code des murs etc.

The est comme suit :

glEnable (GL_STENCIL_TEST) ;
glStencilFunc (GL_ALWAYS, 1, 1) ;
glStencilOp (GL_KEEP, GL_ZERO, GL_REPLACE) ;

mainFloorArea.Draw () ;

glStencilFunc (GL_ALWAYS, 1, 1) ;
glStencilMask (GL_FALSE) ;
glDisable (GL_DEPTH_TEST) ;

otherPolygons.Draw () ;

glEnable (GL_DEPTH_TEST) ; du
glDisable (GL_STENCIL_TEST) ;

restOfTheShapes.Draw () ; le

This tout fonctionne très bien et tout est lovely.

However, je doit s'ajouter en un certain texte qui peut prendre n'importe quelle position dans l'espace 3D. Ceci doit être fait avant le code ci-dessus de sorte qu'il apparaisse derrière n'importe quel problème transparent de surfaces.

The que j'obtiens est que toutes les fois que le texte est devant les otherPolygons il prend la couleur des otherPolygons. Ceci fait évidemment les bouts des textes unreadable.

Any sur la façon dont je pourrais empêcher ceci ? Je pense que la raison ceci se produit parce que je place la fonction de pochoir toujours au passage pour les otherPolygons ainsi le texte agit comme un stencil.

I ont essayé de dégager l'amortisseur de pochoir avant que le dessin du plancher mais de rien semble à work.

Thanks à l'avance
class= de

Réponse : Problèmes avec l'amortisseur de pochoir d'Opengl

Je ne suis pas sûr comment obtenir le fonctionnement ci-dessus de code. C'est code que j'emploie pour accéder à des pages Web. Il est troisième ou quatrième génération et assez robuste. C'est un module complet de code.

'clsInternetConnection
'
La 'classe fournit functionalty pour lire des pages Web.
'
'Mis en application comme un module de classe pour l'usage avec tout projet de VB ou de VBA.
'
'© Kevin 2008-2010 M. Jones

Option explicite

Const privé INTERNET_OPEN_TYPE_PRECONFIG = 0
Const privé INTERNET_FLAG_RELOAD = &H80000000
Const privé INTERNET_FLAG_PRAGMA_NOCACHE = &H100
Const privé INTERNET_OPTION_RECEIVE_TIMEOUT en tant que longtemps = 6

Const privé UserAgent = « VB »

mConnectionHandle privé en tant que longtemps
mTimeoutSeconds privés en tant que longtemps

Privé déclarer la bibliothèque « wininet » d'InternetCloseHandle de fonction (le _
     hInet de ByRef en tant que long _
  ) En tant que longtemps

Privé déclarer la bibliothèque « wininet » dit « InternetOpenA » d'InternetOpen de fonction (le _
     ByVal sAgent comme corde, _
     lAccessType de ByVal en tant que longtemps, _
     sProxyName de ByVal comme corde, _
     sProxyBypass de ByVal comme corde, _
     lFlags de ByVal en tant que long _
  ) En tant que longtemps

Privé déclarer la bibliothèque « wininet » dit « InternetOpenUrlA » d'InternetOpenUrl de fonction (le _
     hInternetSession de ByVal en tant que longtemps, _
     lpszUrl de ByVal comme corde, _
     lpszHeaders de ByVal comme corde, _
     dwHeadersLength de ByVal en tant que longtemps, _
     dwFlags de ByVal en tant que longtemps, _
     dwContext de ByVal en tant que long _
) En tant que longtemps

Privé déclarer la bibliothèque « wininet » d'InternetReadFile de fonction (le _
     ByVal hFile en tant que longtemps, _
     sBuffer de ByVal comme corde, _
     lNumBytesToRead de ByVal en tant que longtemps, _
     lNumberOfBytesRead en tant que long _
  ) Comme nombre entier
 
Privé déclarer la bibliothèque « wininet.dll » dit « InternetSetOptionA » d'InternetSetOption de fonction (le _
     hInternet de ByVal en tant que longtemps, _
     dwOption de ByVal en tant que longtemps, _
     lpBuffer de ByRef en tant que quels, _
     dwBufferLength de ByVal en tant que long _
  ) En tant que longtemps

Class_Initialize secondaire privé ()

  mConnectionHandle = InternetOpen (UserAgent, INTERNET_OPEN_TYPE_PRECONFIG, vbNullString, vbNullString, 0)
  Si mConnectionHandle = 0 puis
     MsgBox « incapable d'ouvrir une connexion internet. La cause le plus susceptible est trop de poignées ont été créées. »
  Finir si
  mTimeoutSeconds = 30

Sous-marin d'extrémité

Class_Terminate secondaire privé ()

  mConnectionHandle d'InternetCloseHandle
     
Sous-marin d'extrémité

Fonction publique GetWebPage (_
     URL de ByVal comme corde, _
     ByVal facultatif ProxyUserID comme corde, _
     ByVal facultatif ProxyPassword comme corde, _
     ByVal facultatif TimeoutSeconds en tant que long _
  ) Comme corde

'Obtenir une page Web.
'
'Syntaxe
'
'GetWebPage (URL, [ProxyUserID], [ProxyPassword])
'
'URL - Un URL complet à une page Web.
'
'ProxyUserID - l'identification de l'utilisateur pour le proxy server, le cas échéant. Facultatif. Si omis
'alors aucun proxy server n'est assumé.
'
'ProxyPassword - le mot de passe pour le proxy server. Facultatif. Ignoré si
'ProxyUserID est omis.
'
'TimeoutSeconds - le nombre de secondes à attendre jusqu'à la synchronisation dehors. Facultatif.
'Si omis alors 30 secondes est employées.

  Faible ConnectionHandle en tant que longtemps
  Faible URLHandle en tant que longtemps
  Faible BytesRead en tant que longtemps
  Faible résultat comme booléen
  Faible InputBuffer comme corde * 10000
  Faible PageContent comme corde
  Faible SecurityData comme corde
 
   Si Len (ProxyUserID) > 0 puis
     SecurityData = ProxyUserID
     Si Len (ProxyPassword) > 0 puis
        SecurityData = SecurityData et « :  » Et ProxyPassword
     Finir si
     SecurityData = SecurityData et « @ »
     L'URL = remplacent (URL, « : / », « : / » et SecurityData)
  Finir si
 
   Si TimeoutSeconds = 0 puis TimeoutSeconds = mTimeoutSeconds
 
   Si mConnectionHandle <> 0 puis
     Résultat = InternetSetOption (mConnectionHandle, INTERNET_OPTION_RECEIVE_TIMEOUT, TimeoutSeconds * 1000, Len (TimeoutSeconds))
     URLHandle = InternetOpenUrl (mConnectionHandle, URL, vbNullString, 0, INTERNET_FLAG_RELOAD ou INTERNET_FLAG_PRAGMA_NOCACHE, 0)
     Si URLHandle <> 0 puis
        Faire
           InputBuffer = vbNullString
           Résultat = InternetReadFile (URLHandle, InputBuffer, Len (InputBuffer), BytesRead)
           PageContent = PageContent et sont partis (InputBuffer, BytesRead)
        Faire une boucle tandis que BytesRead > 0
        InternetCloseHandle URLHandle
     Finir si
  Finir si
 
   GetWebPage = PageContent
 
Fonction de fin

La propriété publique obtiennent ValidInternetConnection () comme booléenne

  ValidInternetConnection = mConnectionHandle <> 0

Propriété d'extrémité

La propriété publique obtiennent TimeoutSeconds () en tant que longtemps

  TimeoutSeconds = mTimeoutSeconds

Propriété d'extrémité

La propriété publique a laissé TimeoutSeconds (le _
     Valeur de ByVal en tant que long _
  )

  mTimeoutSeconds = valeur

Propriété d'extrémité

Kevin
Autres solutions  
  •  MS Excel 2007 et pdf - l'exportation vers le pdf prend de longues heures !
  •  Dans le Perl, comment j'ajoute une valeur à la liste, puis le contrôle pour voir si la valeur existent avant d'ajouter une nouvelle valeur
  •  Comment fais j'initialiser de la HP BL460c G6 de san et de la HP XP 240000
  •  Comment fais j'employer une clef de permis de volume sur un ordinateur de HP avec du CD de restauration
  •  Emplacement primaire de deux SCCM dans l'annuaire actif
  •  L'initiateur et la HP D2D de l'iSCSI R2 du serveur 2008 de Windows GERCENT l'issue
  •  Stocker le dossier dans le mysql using connector.net et le champ de goutte
  •  Carte vidéo d'USB - bit 32 sur le matériel travaillant au niveau du bit 64 ?
  •  asp.net que j'essaye de convertir une forme de HTML en forme d'aspx ou ? ce qui jamais. Aide du besoin sur la façon dont à à elle.
  •  Winzip 12 issues de secours du travail ?
  •  
    programming4us programming4us