File: CastleRenderer.TGLRendererContextCache.html

package info (click to toggle)
castle-game-engine 5.2.0-3
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 185,428 kB
  • sloc: pascal: 260,781; cpp: 1,363; objc: 713; makefile: 537; xml: 496; sh: 480; php: 4
file content (134 lines) | stat: -rw-r--r-- 9,536 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
<html>
<head>
<title>Castle Game Engine: CastleRenderer: Class TGLRendererContextCache</title>
<meta name="generator" content="PasDoc 0.13.0">
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<link rel="StyleSheet" type="text/css" href="pasdoc.css">
</head>
<body>
<table class="container"><tr><td class="navigation">
<h2>Castle Game Engine</h2><p><a href="introduction.html" class="navigation">Introduction</a></p><p><a href="AllUnits.html" class="navigation">Units</a></p><p><a href="ClassHierarchy.html" class="navigation">Class Hierarchy</a></p><p><a href="AllClasses.html" class="navigation">Classes, Interfaces, Objects and Records</a></p><p><a href="AllTypes.html" class="navigation">Types</a></p><p><a href="AllVariables.html" class="navigation">Variables</a></p><p><a href="AllConstants.html" class="navigation">Constants</a></p><p><a href="AllFunctions.html" class="navigation">Functions and Procedures</a></p><p><a href="AllIdentifiers.html" class="navigation">Identifiers</a></p></td><td class="content">
<a name="TGLRendererContextCache"></a><h1 class="cio">Class TGLRendererContextCache</h1>
<table class="sections wide_list">
<tr>
<td><a class="section" href="#PasDoc-Description">Description</a></td><td><a class="section" href="#PasDoc-Hierarchy">Hierarchy</a></td><td>Fields</td><td><a class="section" href="#PasDoc-Methods">Methods</a></td><td>Properties</td></tr></table>
<a name="PasDoc-Description"></a><h2 class="unit">Unit</h2>
<p class="unitlink">
<a  href="CastleRenderer.html">CastleRenderer</a></p>
<h2 class="declaration">Declaration</h2>
<p class="declaration">
<code>type TGLRendererContextCache = class(TObject)</code></p>
<h2 class="description">Description</h2>
<p>
Cache used by <a class="normal" href="CastleRenderer.TGLRenderer.html">TGLRenderer</a> instances to share OpenGL resources, like textures. This may save a lot of OpenGL memory when you use multiple renderers (for example, multiple <a class="normal" href="CastleScene.TCastleScene.html">TCastleScene</a> instances).

<p>The cache can only be shared by renderers in the same OpenGL context, or in shared OpenGL contexts. It cannot be reused in totally alien OpenGL contexts, as the OpenGL identifiers will simply not exist there. In practice, this should not be a problem, as our OpenGL contexts always share resources, and you will almost always just use a single instance of this cache inside <a class="normal" href="CastleScene.html#GLContextCache">GLContextCache</a>.</p>
<a name="PasDoc-Hierarchy"></a><h2 class="hierarchy">Hierarchy</h2>
<ul class="hierarchy"><li class="ancestor">TObject</li>
<li class="thisitem">TGLRendererContextCache</li></ul><h2 class="overview">Overview</h2>
<a name="PasDoc-Methods"></a><h3 class="summary">Methods</h3>
<table class="summary wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>constructor <b><a  href="CastleRenderer.TGLRendererContextCache.html#Create">Create</a></b>;</code></td>
</tr>
<tr class="list2">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>destructor <b><a  href="CastleRenderer.TGLRendererContextCache.html#Destroy">Destroy</a></b>; override;</code></td>
</tr>
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>function <b><a  href="CastleRenderer.TGLRendererContextCache.html#Shape_IncReference">Shape_IncReference</a></b>(Shape: <a  href="CastleRenderer.TX3DRendererShape.html">TX3DRendererShape</a>; Fog: <a  href="X3DNodes.IAbstractFogObject.html">IAbstractFogObject</a>; ARenderer: <a  href="CastleRenderer.TGLRenderer.html">TGLRenderer</a>): <a  href="CastleRenderer.TShapeCache.html">TShapeCache</a>;</code></td>
</tr>
<tr class="list2">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>procedure <b><a  href="CastleRenderer.TGLRendererContextCache.html#Shape_DecReference">Shape_DecReference</a></b>(var ShapeCache: <a  href="CastleRenderer.TShapeCache.html">TShapeCache</a>);</code></td>
</tr>
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>function <b><a  href="CastleRenderer.TGLRendererContextCache.html#Program_IncReference">Program_IncReference</a></b>(ARenderer: <a  href="CastleRenderer.TGLRenderer.html">TGLRenderer</a>; Shader: TShader; const ShapeNiceName: string): <a  href="CastleRenderer.TShaderProgramCache.html">TShaderProgramCache</a>;</code></td>
</tr>
<tr class="list2">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>procedure <b><a  href="CastleRenderer.TGLRendererContextCache.html#Program_DecReference">Program_DecReference</a></b>(var ProgramCache: <a  href="CastleRenderer.TShaderProgramCache.html">TShaderProgramCache</a>);</code></td>
</tr>
</table>
<h2 class="description">Description</h2>
<h3 class="detail">Methods</h3>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="Create"></a><code>constructor <b>Create</b>;</code></td>
</tr>
<tr><td colspan="2">
&nbsp;</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="Destroy"></a><code>destructor <b>Destroy</b>; override;</code></td>
</tr>
<tr><td colspan="2">
&nbsp;</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="Shape_IncReference"></a><code>function <b>Shape_IncReference</b>(Shape: <a  href="CastleRenderer.TX3DRendererShape.html">TX3DRendererShape</a>; Fog: <a  href="X3DNodes.IAbstractFogObject.html">IAbstractFogObject</a>; ARenderer: <a  href="CastleRenderer.TGLRenderer.html">TGLRenderer</a>): <a  href="CastleRenderer.TShapeCache.html">TShapeCache</a>;</code></td>
</tr>
<tr><td colspan="2">
<p>
Shape cache. We return <a class="normal" href="CastleRenderer.TShapeCache.html">TShapeCache</a>, either taking an existing instance from cache or creating and adding a new one. Caller is responsible for checking are Arrays / Vbo zero and eventually initializing and setting.</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="Shape_DecReference"></a><code>procedure <b>Shape_DecReference</b>(var ShapeCache: <a  href="CastleRenderer.TShapeCache.html">TShapeCache</a>);</code></td>
</tr>
<tr><td colspan="2">
&nbsp;</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="Program_IncReference"></a><code>function <b>Program_IncReference</b>(ARenderer: <a  href="CastleRenderer.TGLRenderer.html">TGLRenderer</a>; Shader: TShader; const ShapeNiceName: string): <a  href="CastleRenderer.TShaderProgramCache.html">TShaderProgramCache</a>;</code></td>
</tr>
<tr><td colspan="2">
<p>
Shader program cache. We return <a class="normal" href="CastleRenderer.TShaderProgramCache.html">TShaderProgramCache</a>, either taking an existing instance from cache or creating and adding a new one. If we create a new one, we will use Shader to initialize program hash and to create and link actual <a class="normal" href="CastleRenderer.TX3DGLSLProgram.html">TX3DGLSLProgram</a> instance.</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="Program_DecReference"></a><code>procedure <b>Program_DecReference</b>(var ProgramCache: <a  href="CastleRenderer.TShaderProgramCache.html">TShaderProgramCache</a>);</code></td>
</tr>
<tr><td colspan="2">
&nbsp;</td></tr>
</table>
<!-- Piwik -->
<script type="text/javascript">
  var _paq = _paq || [];
  _paq.push(["trackPageView"]);
  _paq.push(["enableLinkTracking"]);

  (function() {
    var u=(("https:" == document.location.protocol) ? "https" : "http") + "://michalis.ii.uni.wroc.pl/piwik-castle-engine/";
    _paq.push(["setTrackerUrl", u+"piwik.php"]);
    _paq.push(["setSiteId", "1"]);
    var d=document, g=d.createElement("script"), s=d.getElementsByTagName("script")[0]; g.type="text/javascript";
    g.defer=true; g.async=true; g.src=u+"piwik.js"; s.parentNode.insertBefore(g,s);
  })();
</script>
<!-- End Piwik Code -->

<noscript>
<!-- Piwik Image Tracker -->
<img src="http://michalis.ii.uni.wroc.pl/piwik-castle-engine/piwik.php?idsite=1&amp;rec=1" style="border:0" alt="" />
<!-- End Piwik -->
</noscript>
<hr noshade size="1"><span class="appinfo"><em>Generated by <a  href="http://pasdoc.sourceforge.net/">PasDoc 0.13.0</a> on 2015-06-15 04:43:11</em>
</span>
</td></tr></table></body></html>