Jump to content

Recommended Posts

Posted

I have a mod with many custom rendered blocks with models. I have noticed that when I have a lot of those blocks in one small area, they start to cause fps loss. I guessing tesselators are less resource intensive because you are not drawing the excess face of you block, but is it worth the trouble because my models are decently complex and it might be difficult to recreate them with tesselators. So which is the better of the two?

Don't be afraid to ask question when modding, there are no stupid question! Unless you don't know java then all your questions are stupid!

Posted

Hi

 

I would personally prefer models for anything more complicated than more than 2 or three cuboid components.  The tessellator just becomes major head damage to do anything complicated with, especially if it has oblique lines or non-triangular/rectangular faces in it, and I suspect it wouldn't be much faster, assuming the model is rendering efficiently.

 

Is your model in a IBSRH or a TileEntity?  One of the reasons that vanilla blocks with the tessellator are so fast, is that they are compiled once into a render list (slow), and then just rendered from the render list each time (fast).  TileEntities on the other hand do a custom re-render every single frame (slow).

 

-TGG

Posted

I would prefer Tessellators over Models for tile entities (In fact, I'm trying to convert my TE-Models into tessellator renderers), since if you look at the render method within the ModelRenderer class (the class of a cube from the model), it's a bit heavy; here's a snippet of the render code:

        if (!this.isHidden) then
            if (this.showModel) then
                if (!this.compiled) then
                    this.compileDisplayList(par1);

                GL11.glTranslatef(this.offsetX, this.offsetY, this.offsetZ);

                if (this.rotateAngleX == 0.0F && this.rotateAngleY == 0.0F && this.rotateAngleZ == 0.0F) then
                    if (this.rotationPointX == 0.0F && this.rotationPointY == 0.0F && this.rotationPointZ == 0.0F) then
                        GL11.glCallList(this.displayList);

                        if (this.childModels != null) then
                            for (i = 0; i < this.childModels.size(); ++i) do
                                ((ModelRenderer)this.childModels.get(i)).render(par1);
                    else
... etc. ...

Don't ask for support per PM! They'll get ignored! | If a post helped you, click the "Thank You" button at the top right corner of said post! |

mah twitter

This thread makes me sad because people just post copy-paste-ready code when it's obvious that the OP has little to no programming experience. This is not how learning works.

Posted

I would say to start out with Models because they are easier. When you've mastered those, then I highly encourage ISBRH <-- they are truly my favorite Forge thing at the moment; they're powerful, simple, and very easy to make. But again, if you are trying to create complex shapes in the world, then it is highly difficult to hard code them with the Tessellator in an ISBRH if you are new or unskilled.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.