Rendering of multi-fragment effects can be greatly accelerated on the GPU. However, existing methods always need to read the model data in more than one passes, due to the requirements for depth ordering of fragments and the architecture limitation of the GPU. This has been a bottleneck for increasing the rendering efficiency, because of the limited transmittance bandwidth from CPU to GPU. Though there have been methods proposed to use CUDA with the data loaded once, they cannot process large models due to the limited storage on the GPU. This paper proposes a new method to implement single-pass GPU rendering of multi-fragment effects. It first decomposes the 3D model into a set of convex polyhedrons, and then by the viewpoint determines the order of transmitting the convex polyhedrons one by one to the GPU, to guarantee the correct ordering of fragments. In the process, the new method immediately performs illumination computation and blends the rendering results of the transmitted convex polyhedrons, so that it can greatly reduce the storage requirement. As a result, it can take more shading parameters to promote the rendering effects. Experimental results show that the new method can be faster than existing methods, even compared with the methods using CUDA, and can conveniently handle large models, even those with high depth complexity.