Depth texture stores only depth values and so we attach this to FBO but when we attach this non default FBO to system fbo as a texture where do the color values come from, i mean as we dont have any color attachment, how to draw this depth texture ??
Your not making much sense here. There isno such thing as a system FBO, there is only the default framebuffer, which is window system provided and has nothing to do with FBOs. Actually, I think I already told you so in another thread IIRC. So once and for all: There is no default or window system provided FBO. Also, you cannot attach anything to the default framebuffer. Period.
Second, having a depth texture and one or more color attachments are different things - and in the following I’m only talking about core GL without any legacy stuff. Writing to color attachments happens via fragment shaders. Fragment shaders are not run, if the depth test discards a fragment. To be able to actually do a depth test, there needs to be a depth buffer attached to the FBO. Depth values are automatically generated - you don’t need to do anything for that. The depth attachment will be updated automatically when you render stuff and newly rasterized fragments pass the depth test (i.e. the depth attachment is updated). I’m not exactly sure right now what happens if the depth test is enabled and there is no depth attachment on your FBO, but I suspect it works anyway. You can write depth values from a fragment shader as well, using gl_FragDepth. This will write depth values to your depthattachment not to any color attachment.
What’s your use-case? What do you want to achieve? Shadow mapping, by any chance?