35#include <libFreeWRL.h>
37#include "../vrml_parser/Structs.h"
38#include "../main/headers.h"
39#include "../opengl/OpenGL_Utils.h"
40#include "../opengl/Textures.h"
41#include "../scenegraph/Component_Shape.h"
42#include "../scenegraph/RenderFuncs.h"
171 switch(node->_nodeType){
172 case NODE_PixelTexture3D:
173 case NODE_ComposedTexture3D:
174 case NODE_ImageTexture3D:
181int is_or_has_Tex3D(
struct X3D_Node* node) {
183 if (!node)
return ret;
187 if (node->_nodeType == NODE_MultiTexture) {
189 p = mnode->texture.p;
190 n = mnode->texture.n;
192 for (
int i = 0; i < n; i++) {
193 switch (p[i]->_nodeType) {
194 case NODE_PixelTexture3D:
195 case NODE_ComposedTexture3D:
196 case NODE_ImageTexture3D:
205 loadTextureNode(X3D_NODE(node),NULL);
206 gglobal()->RenderFuncs.textureStackTop=1;
208void move_texture_to_opengl(textureTableIndexStruct_s* me);
211 if (node->autoRefresh > 0.0) {
212 double dtime = TickTime();
213 double elapsedTime = dtime - node->__lasttime;
214 double runtime = dtime - BrowserStartTime();
215 if (elapsedTime > node->autoRefresh && runtime < node->autoRefreshTimeLimit) {
216 node->__lasttime = dtime;
217 textureTableIndexStruct_s* tti;
218 tti = getTableTableFromTextureNode(X3D_NODE(node));
219 tti->status = TEX_NOTLOADED;
223 loadTextureNode(X3D_NODE(node),NULL);
224 gglobal()->RenderFuncs.textureStackTop=1;
228 if(node && node->_nodeType == NODE_ComposedTexture3D){
245 int nx, ny, nfound, nsamesize;
246 nfound = nsamesize = 0;
247 for(i=0;i<tex->n;i++){
249 textureTableIndexStruct_s *tti;
250 tti = getTableTableFromTextureNode(tex->p[i]);
252 if(tti->status == TEX_LOADED){
255 nx = tti->x; ny = tti->y;
258 if(tti->x == nx && tti->y == ny) nsamesize++;
264 if(nsamesize == nfound && nfound == tex->n){
267 printf(
"ComposedTexture3D all same size textures n %d x %d y %d\n",tex->n,nx,ny);
273 printf(
"ComposedTexture3D not all same size textures \n");
278 gglobal()->RenderFuncs.textureStackTop = 0;
279 for(i=0;i<min(tex->n,MAX_MULTITEXTURE);i++){
282 loadTextureNode(X3D_NODE(tex->p[i]),NULL);
283 allLoaded = allLoaded && getTableTableFromTextureNode(X3D_NODE(tex->p[i]))->status >= TEX_LOADED;
284 gglobal()->RenderFuncs.textureStackTop++;
290 textureTableIndexStruct_s *tti;
291 tti = getTableTableFromTextureNode(X3D_NODE(node));
292 tti->status = max(TEX_NEEDSBINDING, tti->status);
293 loadTextureNode(X3D_NODE(node),NULL);