You don't need to call render. Ext takes care of that stuff automatically. Here is a small example on how to dynamically add a component.
The following code creates your viewport and statically places a panel in it
If you want to add a textfield to it dynamically simply do the following
title: 'My panel',
var newTextfield = new Ext.form.TextField();
var myPanel = Ext.getCmp('myPanel'); //Get the panel based on the id (Don't do this all over the place, there are better ways)
myPanel.doLayout(); //Since the panel is already rendered we need to call doLayout so that we can see our text field