Abstract:
An image forming apparatus includes a rendering processing unit that represents position information of each vertex of a plurality of triangles forming a figure in a first image data with coordinate values in a first axis in a depth direction, a second axis perpendicular to the first axis, and a third axis perpendicular to both the first axis and the second axis, obtains the position information and color information on each vertex of the triangles, and performs the rendering process on the first image data to produce a second image data, a hidden-surface processing unit that performs a hidden-surface process on the second image data to produce a third image data, and an image processing unit that performs an image process on the third image data.

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
     The present document incorporates by reference the entire contents of Japanese priority document, 2003-326536 filed in Japan Sep. 18, 2003. 
     BACKGROUND OF THE INVENTION 
     1) Field of the Invention 
     The present invention relates to a technology for performing a rendering process and an image processing on three-dimensional graphic data. 
     2) Description of the Related Art 
     In recent years, color desktop publishing (DTP) processors and word processors include highly-functional applications, thereby making it possible to create not only text but also complex graphics. Among others, a gradation function for successively changing color density is widely used for enhancing the appearance of documents. For example, GDI+® is known as a graphic application programming interface (API) for WINDOWS® 2000, which is an operation system dedicated to personal computers and manufactured by Microsoft Corporation. A gradient fill of this GDI+® defines, as shown in  FIG. 33 , three end points of a triangle with each different color, and interpolates inside of each point for rendering. 
     Also, in Power Point®, which is a presentation software program manufactured by Microsoft Corporation, two-dimensional graphics and photo images are pasted for creating documents for presentation. 
     Conventionally, pasting three-dimensional graphic data on a presentation document or the like is performed after the three-dimensional graphic data is converted to two-dimensional image data. 
     As for three-dimensional (3D) processing, a scheme is known in which end points of a triangle polygon are assigned with RGB colors and then interpolation is performed based on a plane equation. 
     In Power Point® of Microsoft Corporation, examples of an image to be pasted are two-dimensional bit map data and two-dimensional graphics. As for two-dimensional bit map data, due to a difference in resolution between a cathode-ray tube (CRT) and a printer, the image is disadvantageously degraded when printed out with a zoom-in process. 
     On the other hand, two-dimensional graphics allow zoom-in and zoom-out, and therefore no image degradation occurs due to zoom-in. However, two-dimensional graphics are not as realistic as photo images. Also, a two-dimensional graphic is merely a figure viewed from one direction. To get a figure viewed from another direction, another figure has to be rendered. 
     The problems described above at the time of using two-dimensional graphics can be solved by pasting three-dimensional graphic data. Three-dimensional graphic data allows zoom-in and zoom-out, and no image degradation occurs due to zoom-in. Also, three-dimensional graphics are realistic as photo images. Furthermore, the three-dimensional graphics can be rotatably pasted, thereby making it possible to freely generate two-dimensional images with different view points. 
     However, when three-dimensional graphic data is pasted during a rendering process with a gradient fill of GDI+®, for example, such rendering is merely two-dimensional rendering. Therefore, in rendering three-dimensional graphic data, a hidden-surface process cannot be performed and therefore, disadvantageously, a clear and realistic image cannot be generated. 
     The hidden-surface process is described below.  FIG. 34A  is a diagram for explaining an example of the hidden-surface process. Here, two three-dimensional triangles are provided at their end points with Z values, and the hidden-surface process is performed through the known Z buffer scheme, for example. When the hidden-surface process is accurately performed, as shown in the drawing, in a three-dimensional point of view, one triangle is penetrated by the other triangle.  FIG. 34B  is a diagram for explaining an example of a rendering process without a hidden-surface process. In this case, a figure in which one triangle is not penetrated by the other triangle, which is different from a figure actually viewed, is rendered. 
       FIG. 34C  is a diagram for explaining another example of the rendering process without a hidden-surface process. In this example, one three-dimensional triangle is divided into two figures to be displayed for rendering.  FIG. 34D  is a diagram for explaining still another example of the rendering process without a hidden-surface process so that a stereoscopic positional relation between the two triangles is made clear. In this example, three figures are rendered. With this, a process of obtaining a figure to be displayed becomes complex, and an image processing time is increased. 
     Moreover, at the time of forming an image, such as at the time of actual printing, a scheme can be taken in which a three-dimensional graphic process is performed typically by a host personal computer on three-dimensional graphic data in print data, and after the three-dimensional graphic data is converted to two-dimensional data, the data is transferred to a printer. In this case, however, communication data and a communication time are increased. Also, due to a difference between a resolution of a host personal computer and a low resolution of the printer, an aliasing becomes conspicuous when the data is actually printed out, resulting in low image quality. 
     To solve these conventional problems, a printing apparatus has been published in which a rendering process is performed in the printing apparatus so that print data including three-dimensional image information received from a host is changed to a three-dimensional graphic for print-out, thereby reducing a load on data communications and achieving a high-speed process (see, for example, Japanese Patent Laid-Open Publication No. 07-168679). 
     This printing apparatus uses a scheme in which projection conversion is performed by the printing apparatus itself for converting three-dimensional graphic data to two-dimensional data for rendering. 
     According to the patent document mentioned above, a decision regarding a back side is made to a convex figure, such as a simple hexahedron, and then projection conversion is performed, thereby making it possible to render approximately accurate figure. However, the patent document does not mention a hidden-surface process required for normal three-dimensional graphic data. In practice, without such a hidden-surface process, an accurate figure cannot be rendered. 
     Furthermore, conventionally, the Z buffer scheme is known as a hidden-surface process. Currently, however, printers are typically at a resolution of 120 dots per inch (dpi), which requires a memory amount that is several tens of times as large as a memory amount of a CRT at a resolution of 72 dpi. Therefore, it is generally not an easy task for the printer to perform a hidden-surface process. 
     SUMMARY OF THE INVENTION 
     It is an object of the present invention to solve at least the above problems in the conventional technology. 
     An image forming apparatus according to one aspect of the present invention includes a rendering processing unit that represents position information of each vertex of a plurality of triangles forming a figure in a first image data with coordinate values in a first axis in a depth direction, a second axis in a first direction perpendicular to the first axis, and a third axis in a second direction perpendicular to both the first axis and the second axis, obtains the position information and color information on each vertex of the triangles, and performs the rendering process on the first image data to produce a second image data; a hidden-surface processing unit that performs a hidden-surface process on the second image data to produce a third image data; and an image processing unit that performs an image procession the third image data. 
     An image forming method according to another aspect of the present invention includes obtaining position information of each vertex of a plurality of triangles forming a figure in a first image data; performing a rendering process on the first image data to produce a second image data; performing a hidden-surface process on the second image data to produce a third image data; and performing an image process on the third image data. 
     A computer-readable recoding medium according to still another aspect of the present invention stores a computer program for realizing the image forming method according to the above aspect. 
     The other objects, features, and advantages of the present invention are specifically set forth in or will become apparent from the following detailed description of the invention when read in conjunction with the accompanying drawings. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1A  is a functional block diagram of an image forming apparatus according to an embodiment of the present invention; 
         FIG. 1B  is a partial block diagram of the image forming apparatus according to the embodiment; 
         FIG. 2  is a diagram of a hardware structure of the image forming apparatus according to the embodiment; 
         FIG. 3  is a diagram for explaining a main flow of data of the image forming apparatus according to the embodiment; 
         FIG. 4  is a diagram of data transmission and reception among components and memories in the image forming apparatus according to the embodiment; 
         FIG. 5  is a diagram of an example of a format of a main memory in the image forming apparatus according to the embodiment; 
         FIG. 6  is a functional block diagram of a rendering unit of the image forming apparatus according to the embodiment; 
         FIG. 7  is a flowchart of a rendering process to be performed by the image forming apparatus according to the embodiment; 
         FIG. 8  is a functional block diagram of a rendering processing unit of the image forming apparatus according to the embodiment; 
         FIG. 9  is a diagram of x and y coordinates of three points of a triangle and R, G, B, and Z values in these coordinates generated in the rendering unit; 
         FIG. 10  is a diagram for explaining a correcting operation to be performed by an RGB correcting unit for correcting RGB by using a tetragon surrounding a triangle to be generated; 
         FIG. 11  is a flowchart of a rendering process to be performed by the rendering processing unit of the image forming apparatus according to the embodiment; 
         FIG. 12  is a block diagram of a triangle setting-up unit in the rendering processing unit; 
         FIG. 13  is a block diagram of a horizontal-differential-R generating unit shown in  FIG. 12 ; 
         FIG. 14  is a block diagram of a vertical-differential-R generating unit shown in  FIG. 12 ; 
         FIG. 15  is a block diagram of a horizontal RGB DDA unit  16 R shown in  FIG. 8 ; 
         FIG. 16  is a block diagram of a horizontal Z DDA unit in the rendering processing unit; 
         FIG. 17  is a block diagram of a left-side XYRGBZ start-point generating unit in the rendering processing unit; 
         FIG. 18  is a diagram for explaining calculation of a change ratio of each RGBZ with respect to an x axis direction and a y axis direction; 
         FIG. 19  is a diagram for explaining generation of a gradient fill of a triangle from the calculated change ratio of each RGBZ with respect to the x axis direction and the y axis direction; 
         FIG. 20  is a block diagram of a horizontal X DDA unit of the rendering processing unit; 
         FIG. 21  is a block diagram of a memory address generating unit of the rendering processing unit; 
         FIG. 22  is a block diagram of an RGB correcting unit in the rendering processing unit; 
         FIG. 23  is a block diagram of a hidden-surface processing unit in the image forming apparatus according to the embodiment; 
         FIG. 24  is a block diagram of the image processing unit of the image forming apparatus according to the embodiment; 
         FIG. 25  is a flowchart of an image processing operation to be preformed in the image forming apparatus according to the embodiment; 
         FIG. 26  is a block diagram of a color converting unit in the image processing unit; 
         FIG. 27  is a flowchart of the operation of the color converting unit in the image processing unit; 
         FIG. 28  is a block diagram of a gray-scale processing unit in the image processing unit; 
         FIG. 29  is a flowchart of the operation of the gray-scale processing unit in the image processing unit; 
         FIG. 30  is a block diagram of a fixed-length data generating unit in the image processing unit; 
         FIG. 31  is a diagram for explaining an exemplary modification of the image forming apparatus according to the embodiment; 
         FIG. 32  is a diagram for explaining another exemplary modification of the image forming apparatus according to the embodiment; 
         FIG. 33  is a diagram of an example in which the image forming apparatus according to the embodiment is applied to a color copying machine; 
         FIG. 34A  is a diagram of an example in which a hidden-surface process is performed; 
         FIG. 34B  is a diagram of an example in which a hidden-surface process is not performed; 
         FIG. 34C  is a diagram of an example in which rendering is performed without performing a hidden-surface process; and 
         FIG. 34D  is a diagram for explaining a rendering scheme without performing a hidden-surface process so that a stereoscopic positional relation between two triangles is made clear. 
     
    
    
     DETAILED DESCRIPTION 
     Exemplary embodiments of an image forming apparatus, an image forming method, and a computer product according to the present invention are explained in detail with reference to the accompanying drawings. 
       FIG. 1A  is a functional block diagram of an image forming apparatus according to an embodiment of the present invention.  FIG. 1B  is a partial block diagram of the image forming apparatus according to the embodiment.  FIG. 2  is a diagram of a hardware structure of the image forming apparatus according to the embodiment. With reference to  FIGS. 1A ,  1 B, and  2 , the entire structure of the image forming apparatus is described. 
     As shown in  FIG. 1A , the image forming apparatus includes a rendering processing unit  1 , a hidden-surface processing unit  2 , an image processing unit  3 , an encoding unit  4 , a decoding unit  5 , and an engine controller  6 . 
     The rendering processing unit  1  performs rendering by configuring a figure with a plurality of triangles based on image data received through a network  89 . The rendering processing unit  1  receives a rendering command from a CPU  81 , and then calculates Z values sequentially in a horizontal direction. 
     The hidden-surface processing unit  2  reads the Z values calculated by the rendering processing unit  1  from the Z values in a Z buffer (which will be described further below) of a main memory  7  to perform a hidden-surface process, and then finds color information (RGB) values and memory addresses of band memories for rendering. Then, the hidden-surface processing unit  2  transfers the found values and addresses to the image processing unit  3 . Here, the rendering processing unit  1  and the hidden-surface processing unit  2  are collectively referred to as a rendering processing unit  10 . 
     The image processing unit  3  receives the addresses and the color information (RGB) values from the rendering processing unit  1  to perform an image process, and then stores the process results in a band memory area (which will be described further below) of the main memory  7 . 
     The encoding unit  4  encodes the band data of the main memory  7 , and then transfers the encoded band data to an encoded page memory area (which will be described further below) of the main memory  7 . 
     The decoding unit  5  receives the encoded data of each color of cyan (C), magenta (M), yellow (Y), and K (black) encoded by the encoding unit  4  and, as shown in  FIG. 1B , decodes the encoded data in decoding units  51  through  54  for the respective colors for transfer to engine controllers  61  through  64  for the respective colors. The C-color, M-color, Y-color, and K-color engine controllers  61  through  64  receive the image data from the respective decoding units  51  through  54  for transfer to the printer engines  91  through  94  for the respective colors. 
     Here, the image processing unit  3 , the encoding unit  4 , and the decoding unit  5  form an image processing unit according to the present invention. 
     The central processing unit (CPU)  81  controls the entirety of a printer apparatus. A CPU interface (I/F)  82  of the CPU  81  is connected to a memory arbiter (a memory ARB  70 )  70  for interfacing between the CPU  81  and the memory ARB  70  ( FIG. 2 ). 
     The memory ARB  70  controls the main memory (which may be hereinafter referred to simply as memory)  7  through a memory ARB I/F  78 . The memory ARB  70  controls the memory  7 , the CPU  81 , a local I/F  86 , the decoding unit  5 , the rendering unit  1 , the image processing unit  3 , and the encoding unit  4 . 
     The local I/F  86  is an I/F for a local bus, and interfaces among a ROM  87 , a panel controller  85 , the CPU  81 , and the memory  7 . A communication controller  83  is connected to the network  89  for receiving various data and commands from the network  89 , and is also connected to various controllers via the memory ARB  70 . 
     The ROM  87  stores font information, such as characters, programs for the CPU  81 , and other data. The panel controller  85  controls an operation panel  84 . The operation panel  84  detects an input of an operation from the user, and transmits the detected input signal via the panel controller  85  to the relevant component(s) of the image forming apparatus. 
     The main memory  7  stores encoded data of the encoding unit  4 , the programs in the CPU  81 , font data, and various data regarding band memory and Z buffer. 
       FIG. 3  is a diagram for explaining a main flow of data in the image forming apparatus according to the embodiment. A rendering command is generated by the CPU  81  and is then transferred to the rendering processing unit  1 . The rendering processing unit  1  calculates Z values sequentially from a vertical direction of a figure to a horizontal direction to read the Z values of the Z buffer. The hidden-surface processing unit  2  performs a hidden-surface process by using the calculated Z values, and finds color information (RGB) values and the memory addresses of the band memory for rendering. The hidden-surface processing unit  2  then transfers the found values and addresses to the image processing unit  3 . The image processing unit  3  performs an image process to store the results in a binary band memory area  72  for the respective colors in the main memory  7 . 
       FIG. 4  is a diagram of data transmission and reception among the components and the memories in the image forming apparatus according to the embodiment. The rendering processing unit  1  receives a rendering command from the CPU  81 , analyzes the command, and then renders a 3D graphic figure. The hidden-surface processing unit  2  in the rendering unit  10  finds addresses on a Z buffer memory storage area  71  sequentially in the horizontal direction, performs a hidden-surface process, and then transfers the addresses on the band memories and color information (RGB) sequentially to the image processing unit  3 . 
     The image processing unit  3  receives an origin address of a band of each color and a threshold size from the CPU  81  and the memory addresses and the color information (RGB) from the rendering processing unit  1  to perform a color converting process for conversion to CMYK values, and then generates band data after a gray-scale process in each color&#39;s band memory. The main memory  7  stores, for example, encoded data on a page for each color, Z buffer data, and the band data after the gray-scale process. 
     The encoding unit  4  encodes the band data after a gray-scale process for each color, and then transfers the band data to page encoded memory areas  74   c ,  74   m ,  74   y  and  74   k  in the memory  7  for the respective colors. 
     The decoding unit  5  reads and decodes codes required for each color sequentially from the main memory  7  in synchronization with printer engines  91 ,  92 ,  93 , and  94  for the respective colors, and then transfers the decoded codes to engine controllers  61 ,  62 ,  63 , and  64  for the respective colors. 
     The engine controllers  61 ,  62 ,  63 , and  64  for the respective colors receive the codes from the decoding units  51 ,  52 ,  53 , and  54  for the respective colors for controlling the printer engines for the respective colors. 
       FIG. 5  is a diagram of one example of a format of a main memory in the image forming apparatus according to the embodiment. 
     The Z buffer memory storage area  71  is an area for storing a Z-buffer memory required for a hidden-surface process at the time of a 3D rendering process. C-color, M-color, Y-color, and K-color binary band memory storage areas  72   c ,  72   m ,  72   y , and  72   k  store a plurality of pieces of binary, quaternary, and hexadecimal band information after being subjected to an image process for the respective colors. 
     The binary band memory area  72   c ,  72   m ,  72   y , and  72   k  form an image-processing-data storage unit. 
     A C-color encoded page memory area  74   c  is an area for storing encoded C-color data for each band after the gray-scale process for a plurality of pages. An M-color encoded page memory area  74   m  is an area for storing encoded M-color data for each band after the gray-scale process for a plurality of pages. A Y-color encoded page memory area  74   y  is an area for storing encoded Y-color data for each band after the gray-scale process for a plurality of pages. A K-color encoded page memory area  74   k  is an area for storing encoded K-color data for each band after the gray-scale process for a plurality of pages. A program area  75  is an area for storing various programs for the CPU  81 . 
       FIG. 6  is a functional block diagram of the rendering unit of the image forming apparatus according to the embodiment. The memory ARB I/F  78  interfaces with the memory ARB  70  for receiving a rendering command from the CPU  81  and transferring the rendering command to the rendering processing unit  1 . 
     The rendering processing unit  1  receives the 3D rendering command from the CPU  81 , and analyzes the rendering command. Also, the rendering processing unit  1  finds, from the color information of each end points of a triangular figure, horizontal differentials dRX, dGX, and dBX and vertical differentials dRY, dGY, and dBY through a plane equation. Furthermore, the rendering processing unit  1  finds band memory addresses and color information (RGB). Still further, the rendering processing unit  1  finds, from Z-value information of each end point of the triangular figure, a horizontal differential dZX and a vertical differential dZY through the plane equation. Still further, the rendering processing unit  1  finds Z values sequentially from the vertical direction to the horizontal direction. Here, dRX is an abbreviation of dR/dX. The same goes for the following description. 
     The rendering processing unit  1  sends the Z values and the Z-buffer memory addresses to the hidden-surface processing unit  2 . The hidden-surface processing unit  2  performs a hidden-surface process on the image data and, based on the process results, transfers a memory address for each pixel to the image processing unit  3  by using a bandwidth of the band data and a logic address (X 0 , Y 0 , X 1 , Y 1 , X 2 , Y 2 ) of each endpoint of the graphic image. 
     A parameter storage unit  801  temporarily stores parameters of the rendering processing unit  1 . 
     The hidden-surface processing unit  2  receives the Z values and the Z-buffer addresses from the rendering processing unit  1 , receives the corresponding Z values from the Z-buffer band memory of the main memory  7 , and then performs a hidden-surface process. The hidden-surface processing unit  2  then writes, when updating, the Z values from the rendering processing unit  1  to the Z-buffer band memory of the main memory  7 , and then reports the results of the hidden-surface process to the rendering processing unit  1 . A controller  11  controls the entire rendering processing unit  1 . 
       FIG. 7  is a flowchart of a rendering process to be performed by the image forming apparatus according to the embodiment. The controller  11  of the rendering processing unit  1  sets, to the parameter storage unit, each color&#39;s bandwidth of the band memory area in the main memory (step S 101 ). The controller  11  then sets a color conversion table of a color converting nit  31  of the image processing unit  3  (step S 102 ). The controller  11  then sets a dither address of a gray-scale processing unit  32  (step S 103 ). The controller  11  then sets DDX and DDY values of an RGB correcting unit  15  of the rendering unit (step S 104 ). 
     Next, the rendering processing unit  1  reads the rendering command (step S 105 ). The rendering unit  10  then performs a rendering process and a hidden-surface process (step S 106 ). The image processing unit  3  then performs color conversion (step S 107 ). The image processing unit  3  then performs a gray-scale process (step S 108 ). Then, whether all rendering commands have been processed is determined (step S 109 ). It all rendering commands have been processed (Yes at step S 109 ), the procedure ends. 
       FIG. 8  is a functional block diagram of the rendering processing unit of the image forming apparatus according to the embodiment. The command analyzing unit  12  analyzes the rendering command from the CPU  81 , calculates coordinates X 0 , Y 0 , X 1 , Y 1 , X 2 , and Y 2  of each end point of the triangle, color information R 0 , G 0 , B 0 , R 1 , G 1 , B 1 , R 2 , G 2 , and B 2 , and Z-value information Z 0 , Z 1 , and Z 2 , and then transfers these calculated values to a triangle setting-up unit  13 , a left-side XYRGBZ start-point generating unit  14 , and the RGB correcting unit  15 . 
     The triangle setting-up unit  13  finds, from the coordinates and the color information of each end point from the command analyzing unit  12 , horizontal differentials dRX, dGX, dBX, and dZX and vertical differentials dRY, dGY, dBY, and dZY through the triangle&#39;s plane equation, and then transfers these values to the left-side XYRGBZ start-point generating unit  14 , a horizontal RGB DDA unit  16 R, and a horizontal Z DDA unit  16 Z. 
     The triangle setting-up unit  13  forms a pre-rendering processing unit according to the present invention. The RGB correcting unit  15  and the left-side XYRGBZ start-point generating unit  14  form a rendering-start-point calculating unit. The RGB correcting unit  15 , a horizontal X DDA unit  16 X, the horizontal RGB DDA unit  16 R, and the horizontal Z DDA unit  16 Z form a horizontal interpolating unit according to the present invention. Also, the left-side XYRGBZ start-point generating unit  14  and the horizontal X DDA unit  16 X form a position interpolating unit according to the present invention. The RGB correcting unit  15  and the horizontal RGB DDA unit  16 R form a color interpolating unit according to the present invention. The horizontal Z DDA unit  16 Z forms a Z-value interpolating unit according to the present invention. Also, the RGB correcting unit  15  forms a color-information correcting unit. 
     Equations (1-1) to (1-8) are equations for calculating horizontal and vertical differentials based on the triangle&#39;s plane equation. Here, in a scheme generally used for the hidden-surface process, it is assumed that a depth direction of a figure is a z-axis direction, an axis parallel to a horizontal plane and vertical to the z axis is an x axis (normally referred to as a horizontal axis), and an axis parallel to the z axis and the x axis is a y axis (normally referred to as a vertical axis). Therefore, Z values indicate values of z-axis components indicative of a depth, and a point with a deep depth is hidden behind a point with a shallow depth and is not seen. As such, a process of making a point unseen as a graphic process is a hidden-surface process. 
     
       
         
           
             
               
                 
                   
                     
                       ⅆ 
                       R 
                     
                     
                       ⅆ 
                       X 
                     
                   
                   = 
                   
                     
                       
                         
                           ( 
                           
                             
                               R 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               2 
                             
                             - 
                             
                               R 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               0 
                             
                           
                           ) 
                         
                         ⁢ 
                         
                           ( 
                           
                             
                               X 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               1 
                             
                             - 
                             
                               X 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               0 
                             
                           
                           ) 
                         
                       
                       + 
                       
                         
                           ( 
                           
                             
                               R 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               1 
                             
                             - 
                             
                               R 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               0 
                             
                           
                           ) 
                         
                         ⁢ 
                         
                           ( 
                           
                             
                               X 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               2 
                             
                             - 
                             
                               X 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               0 
                             
                           
                           ) 
                         
                       
                     
                     
                       
                         
                           ( 
                           
                             
                               Y 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               2 
                             
                             - 
                             
                               Y 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               0 
                             
                           
                           ) 
                         
                         ⁢ 
                         
                           ( 
                           
                             
                               X 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               1 
                             
                             - 
                             
                               X 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               0 
                             
                           
                           ) 
                         
                       
                       + 
                       
                         
                           ( 
                           
                             
                               Y 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               1 
                             
                             - 
                             
                               Y 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               0 
                             
                           
                           ) 
                         
                         ⁢ 
                         
                           ( 
                           
                             
                               X 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               2 
                             
                             - 
                             
                               X 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               0 
                             
                           
                           ) 
                         
                       
                     
                   
                 
               
               
                 
                   ( 
                   
                     1 
                     ⁢ 
                     
                       - 
                     
                     ⁢ 
                     1 
                   
                   ) 
                 
               
             
             
               
                 
                   
                     
                       ⅆ 
                       R 
                     
                     
                       ⅆ 
                       Y 
                     
                   
                   = 
                   
                     
                       
                         
                           ( 
                           
                             
                               R 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               2 
                             
                             - 
                             
                               R 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               0 
                             
                           
                           ) 
                         
                         ⁢ 
                         
                           ( 
                           
                             
                               Y 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               1 
                             
                             - 
                             
                               Y 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               0 
                             
                           
                           ) 
                         
                       
                       + 
                       
                         
                           ( 
                           
                             
                               R 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               1 
                             
                             - 
                             
                               R 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               0 
                             
                           
                           ) 
                         
                         ⁢ 
                         
                           ( 
                           
                             
                               Y 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               2 
                             
                             - 
                             
                               Y 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               0 
                             
                           
                           ) 
                         
                       
                     
                     
                       
                         
                           ( 
                           
                             
                               Y 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               2 
                             
                             - 
                             
                               Y 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               0 
                             
                           
                           ) 
                         
                         ⁢ 
                         
                           ( 
                           
                             
                               X 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               1 
                             
                             - 
                             
                               X 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               0 
                             
                           
                           ) 
                         
                       
                       + 
                       
                         
                           ( 
                           
                             
                               Y 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               1 
                             
                             - 
                             
                               Y 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               0 
                             
                           
                           ) 
                         
                         ⁢ 
                         
                           ( 
                           
                             
                               X 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               2 
                             
                             - 
                             
                               X 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               0 
                             
                           
                           ) 
                         
                       
                     
                   
                 
               
               
                 
                   ( 
                   
                     1 
                     ⁢ 
                     
                       - 
                     
                     ⁢ 
                     2 
                   
                   ) 
                 
               
             
             
               
                 
                   
                     
                       ⅆ 
                       G 
                     
                     
                       ⅆ 
                       X 
                     
                   
                   = 
                   
                     
                       
                         
                           ( 
                           
                             
                               G 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               2 
                             
                             - 
                             
                               G 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               0 
                             
                           
                           ) 
                         
                         ⁢ 
                         
                           ( 
                           
                             
                               X 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               1 
                             
                             - 
                             
                               X 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               0 
                             
                           
                           ) 
                         
                       
                       + 
                       
                         
                           ( 
                           
                             
                               G 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               1 
                             
                             - 
                             
                               G 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               0 
                             
                           
                           ) 
                         
                         ⁢ 
                         
                           ( 
                           
                             
                               X 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               2 
                             
                             - 
                             
                               X 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               0 
                             
                           
                           ) 
                         
                       
                     
                     
                       
                         
                           ( 
                           
                             
                               Y 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               2 
                             
                             - 
                             
                               Y 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               0 
                             
                           
                           ) 
                         
                         ⁢ 
                         
                           ( 
                           
                             
                               X 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               1 
                             
                             - 
                             
                               X 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               0 
                             
                           
                           ) 
                         
                       
                       + 
                       
                         
                           ( 
                           
                             
                               Y 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               1 
                             
                             - 
                             
                               Y 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               0 
                             
                           
                           ) 
                         
                         ⁢ 
                         
                           ( 
                           
                             
                               X 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               2 
                             
                             - 
                             
                               X 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               0 
                             
                           
                           ) 
                         
                       
                     
                   
                 
               
               
                 
                   ( 
                   
                     1 
                     ⁢ 
                     
                       - 
                     
                     ⁢ 
                     3 
                   
                   ) 
                 
               
             
             
               
                 
                   
                     
                       ⅆ 
                       G 
                     
                     
                       ⅆ 
                       Y 
                     
                   
                   = 
                   
                     
                       
                         
                           ( 
                           
                             
                               G 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               2 
                             
                             - 
                             
                               G 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               0 
                             
                           
                           ) 
                         
                         ⁢ 
                         
                           ( 
                           
                             
                               Y 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               1 
                             
                             - 
                             
                               Y 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               0 
                             
                           
                           ) 
                         
                       
                       + 
                       
                         
                           ( 
                           
                             
                               G 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               1 
                             
                             - 
                             
                               G 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               0 
                             
                           
                           ) 
                         
                         ⁢ 
                         
                           ( 
                           
                             
                               Y 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               2 
                             
                             - 
                             
                               Y 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               0 
                             
                           
                           ) 
                         
                       
                     
                     
                       
                         
                           ( 
                           
                             
                               Y 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               2 
                             
                             - 
                             
                               Y 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               0 
                             
                           
                           ) 
                         
                         ⁢ 
                         
                           ( 
                           
                             
                               X 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               1 
                             
                             - 
                             
                               X 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               0 
                             
                           
                           ) 
                         
                       
                       + 
                       
                         
                           ( 
                           
                             
                               Y 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               1 
                             
                             - 
                             
                               Y 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               0 
                             
                           
                           ) 
                         
                         ⁢ 
                         
                           ( 
                           
                             
                               X 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               2 
                             
                             - 
                             
                               X 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               0 
                             
                           
                           ) 
                         
                       
                     
                   
                 
               
               
                 
                   ( 
                   
                     1 
                     ⁢ 
                     
                       - 
                     
                     ⁢ 
                     4 
                   
                   ) 
                 
               
             
             
               
                 
                   
                     
                       ⅆ 
                       B 
                     
                     
                       ⅆ 
                       X 
                     
                   
                   = 
                   
                     
                       
                         
                           ( 
                           
                             
                               B 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               2 
                             
                             - 
                             
                               B 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               0 
                             
                           
                           ) 
                         
                         ⁢ 
                         
                           ( 
                           
                             
                               X 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               1 
                             
                             - 
                             
                               X 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               0 
                             
                           
                           ) 
                         
                       
                       + 
                       
                         
                           ( 
                           
                             
                               B 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               1 
                             
                             - 
                             
                               B 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               0 
                             
                           
                           ) 
                         
                         ⁢ 
                         
                           ( 
                           
                             
                               X 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               2 
                             
                             - 
                             
                               X 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               0 
                             
                           
                           ) 
                         
                       
                     
                     
                       
                         
                           ( 
                           
                             
                               Y 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               2 
                             
                             - 
                             
                               Y 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               0 
                             
                           
                           ) 
                         
                         ⁢ 
                         
                           ( 
                           
                             
                               X 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               1 
                             
                             - 
                             
                               X 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               0 
                             
                           
                           ) 
                         
                       
                       + 
                       
                         
                           ( 
                           
                             
                               Y 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               1 
                             
                             - 
                             
                               Y 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               0 
                             
                           
                           ) 
                         
                         ⁢ 
                         
                           ( 
                           
                             
                               X 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               2 
                             
                             - 
                             
                               X 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               0 
                             
                           
                           ) 
                         
                       
                     
                   
                 
               
               
                 
                   ( 
                   
                     1 
                     ⁢ 
                     
                       - 
                     
                     ⁢ 
                     5 
                   
                   ) 
                 
               
             
             
               
                 
                   
                     
                       ⅆ 
                       B 
                     
                     
                       ⅆ 
                       Y 
                     
                   
                   = 
                   
                     
                       
                         
                           ( 
                           
                             
                               B 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               2 
                             
                             - 
                             
                               B 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               0 
                             
                           
                           ) 
                         
                         ⁢ 
                         
                           ( 
                           
                             
                               Y 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               1 
                             
                             - 
                             
                               Y 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               0 
                             
                           
                           ) 
                         
                       
                       + 
                       
                         
                           ( 
                           
                             
                               B 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               1 
                             
                             - 
                             
                               B 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               0 
                             
                           
                           ) 
                         
                         ⁢ 
                         
                           ( 
                           
                             
                               Y 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               2 
                             
                             - 
                             
                               Y 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               0 
                             
                           
                           ) 
                         
                       
                     
                     
                       
                         
                           ( 
                           
                             
                               Y 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               2 
                             
                             - 
                             
                               Y 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               0 
                             
                           
                           ) 
                         
                         ⁢ 
                         
                           ( 
                           
                             
                               X 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               1 
                             
                             - 
                             
                               X 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               0 
                             
                           
                           ) 
                         
                       
                       + 
                       
                         
                           ( 
                           
                             
                               Y 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               1 
                             
                             - 
                             
                               Y 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               0 
                             
                           
                           ) 
                         
                         ⁢ 
                         
                           ( 
                           
                             
                               X 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               2 
                             
                             - 
                             
                               X 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               0 
                             
                           
                           ) 
                         
                       
                     
                   
                 
               
               
                 
                   ( 
                   
                     1 
                     ⁢ 
                     
                       - 
                     
                     ⁢ 
                     6 
                   
                   ) 
                 
               
             
             
               
                 
                   
                     
                       ⅆ 
                       Z 
                     
                     
                       ⅆ 
                       X 
                     
                   
                   = 
                   
                     
                       
                         
                           ( 
                           
                             
                               Z 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               2 
                             
                             - 
                             
                               Z 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               0 
                             
                           
                           ) 
                         
                         ⁢ 
                         
                           ( 
                           
                             
                               X 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               1 
                             
                             - 
                             
                               X 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               0 
                             
                           
                           ) 
                         
                       
                       + 
                       
                         
                           ( 
                           
                             
                               Z 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               1 
                             
                             - 
                             
                               Z 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               0 
                             
                           
                           ) 
                         
                         ⁢ 
                         
                           ( 
                           
                             
                               X 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               2 
                             
                             - 
                             
                               X 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               0 
                             
                           
                           ) 
                         
                       
                     
                     
                       
                         
                           ( 
                           
                             
                               Y 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               2 
                             
                             - 
                             
                               Y 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               0 
                             
                           
                           ) 
                         
                         ⁢ 
                         
                           ( 
                           
                             
                               X 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               1 
                             
                             - 
                             
                               X 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               0 
                             
                           
                           ) 
                         
                       
                       + 
                       
                         
                           ( 
                           
                             
                               Y 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               1 
                             
                             - 
                             
                               Y 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               0 
                             
                           
                           ) 
                         
                         ⁢ 
                         
                           ( 
                           
                             
                               X 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               2 
                             
                             - 
                             
                               X 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               0 
                             
                           
                           ) 
                         
                       
                     
                   
                 
               
               
                 
                   ( 
                   
                     1 
                     ⁢ 
                     
                       - 
                     
                     ⁢ 
                     7 
                   
                   ) 
                 
               
             
             
               
                 
                   
                     
                       ⅆ 
                       Z 
                     
                     
                       ⅆ 
                       Y 
                     
                   
                   = 
                   
                     
                       
                         
                           ( 
                           
                             
                               Z 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               2 
                             
                             - 
                             
                               Z 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               0 
                             
                           
                           ) 
                         
                         ⁢ 
                         
                           ( 
                           
                             
                               Y 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               1 
                             
                             - 
                             
                               Y 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               0 
                             
                           
                           ) 
                         
                       
                       + 
                       
                         
                           ( 
                           
                             
                               Z 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               1 
                             
                             - 
                             
                               Z 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               0 
                             
                           
                           ) 
                         
                         ⁢ 
                         
                           ( 
                           
                             
                               Y 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               2 
                             
                             - 
                             
                               Y 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               0 
                             
                           
                           ) 
                         
                       
                     
                     
                       
                         
                           ( 
                           
                             
                               Y 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               2 
                             
                             - 
                             
                               Y 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               0 
                             
                           
                           ) 
                         
                         ⁢ 
                         
                           ( 
                           
                             
                               X 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               1 
                             
                             - 
                             
                               X 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               0 
                             
                           
                           ) 
                         
                       
                       + 
                       
                         
                           ( 
                           
                             
                               Y 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               1 
                             
                             - 
                             
                               Y 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               0 
                             
                           
                           ) 
                         
                         ⁢ 
                         
                           ( 
                           
                             
                               X 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               2 
                             
                             - 
                             
                               X 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               0 
                             
                           
                           ) 
                         
                       
                     
                   
                 
               
               
                 
                   ( 
                   
                     1 
                     ⁢ 
                     
                       - 
                     
                     ⁢ 
                     8 
                   
                   ) 
                 
               
             
           
         
       
     
     The left-side XYRGBZ start-point generating unit  14  uses coordinates X 0 , Y 0 , X 1 , Y 1 , X 2 , and Y 2  of each end points of the triangle from the command analyzing unit  12  and dRX, dGX, dBX, dZX, dRY, dGY, dBY, and dZY from the triangle setting-up unit  13  to find a horizontal start-point X value, R, G, and B values, and Z value in the horizontal direction are found. 
       FIG. 9  is a diagram of x and y coordinates of three points of the triangle and R, G, B, and Z values in these coordinates generated in the rendering unit. The found start point X value, R, G, and B values, and Z value in the horizontal direction are transferred to the horizontal X DDA unit  16 X, the horizontal RGB DDA unit  16 R, and the horizontal Z DDA unit  16 Z. Here, in the y direction, as shown in  FIG. 9 , a downward direction indicates a positive direction. 
     Here, the word “left side” used herein is described. In  FIG. 9 , a triangle includes three points P 0 , P 1 , and P 2 . Here, when this triangle is cut on a plane including the x axis, which is a horizontal-direction axis, two sides have two points of intersection. Of these points of intersection, a side having one of the points of intersection closer to the y axis is referred to as the left side. Therefore, the left-side XYRGBZ start-point generating unit  14  is a unit having a function of generating a point at which the left side is cut when the triangle is cut on the plane including the x axis. 
       FIG. 10  is a diagram for explaining a correcting operation to be performed by the RGB correcting unit of correcting RGB by using a tetragon surrounding a triangle to be generated. The operation of the RGB correcting unit  15  ( FIG. 8 ) is described below. 
     By using the coordinates X 0 , Y 0 , X 1 , Y 1 , X 2 , and Y 2  of each end point of the triangle from the command analyzing unit  12 , the RGB correcting unit  15  divides the tetragon surrounding the triangle by a length DDY of a minimum color in the vertical direction ( 2803 ), and by a length DDX of the minimum color in the horizontal direction ( 2802 ). Then, based on a mesh ( 2804 ), when the start-point X value and Y value in the horizontal direction output from the left-side XYRGBZ start-point generating unit  14  are overlaid on the mesh in the vertical direction, the RGB correcting unit  15  sends a Y-direction updating signal to update the horizontal R, G, and B values transferred from the left-side XYRGBZ start-point generating unit  14  to the horizontal X DDA unit  16 X and the horizontal RGB DDA unit  16 R. 
     Also, the RGB correcting unit  15  monitors an X value for each horizontal pixel of the horizontal X DDA unit  16 X and, when the X value is overlaid on the mesh in the horizontal direction, sends an X-direction updating signal to cause an RGB-value switching unit  17  to update the R, G, and B values output from the horizontal RGB DDA unit  16 R. With this operation, calculation is performed at a normal resolution on a portion of the sides of the figure, but in a filled-in image of the figure, its resolution can be changed. 
     Referring back to  FIG. 8 , the horizontal X DDA unit  16 X receives the horizontal X start-point value from the left-side XYRGBZ start-point generating unit  14 , finds X values of the triangle sequentially for each pixel in the horizontal direction by DDA, and then transfers the X values to the RGB correcting unit  15  and the memory address generating unit  18 . 
     The horizontal RGB DDA unit  16 R receives the horizontal differential dRX, dGX, and dBX from the triangle setting-up unit  13  and horizontal RGB start points from the left-side XYRGBZ start-point generating unit  14 , interpolates the RGB in the horizontal direction for each pixel, and then transfers the results to the RGB switching unit  17 . 
     The RGB switching unit  17  updates the RGB values received from the horizontal RGB DDA unit  16 R based on the X-direction updating signal from the RGB correcting unit  15 . 
     The memory address generating unit  18  converts the logic coordinates X and Y values of the band memory supplied from the horizontal X DDA unit  16 X from the bandwidth of the band memory to physical coordinates of the band memory, and then transfers the results to an image processing unit I/F  19 G and a hidden-surface processing I/F  19 I. 
     When rendering is performed based on the results of the hidden-surface process supplied from the hidden-surface processing unit  2 , the image processing unit I/F  19 G transfers the addresses from the memory address generating unit  18  and the RGB information from the RGB switching unit  17  to the image processing unit  3 . 
     The hidden-surface processing I/F  19 I transfers the Z values from the horizontal Z DDA unit  16 Z and the Z-buffer memory addresses from the memory address generating unit  18  to the hidden-surface processing unit  2 , receives the results of the hidden-surface process, and then transfers the results of the hidden-surface process to the image processing unit I/F  19 G. 
     The horizontal Z DDA unit  16 Z receives the horizontal differential dZX received from the triangle setting-up unit  13  and the horizontal Z start point received from the left-side XYRGBZ start-point generating unit  14 , interpolates the Z values in the horizontal direction for each pixel, and then transfers the results to the hidden-surface processing unit I/F  19 I. 
     The controller  11  controls the rendering processing unit  1 . 
       FIG. 11  is a flowchart of a rendering process to be performed by the rendering processing unit of the image forming apparatus according to the embodiment. The command analyzing unit  12  analyzes the rendering command to find the end points X 0 , Y 0 , X 1 , X 2 , Y 1 , and Y 2  of the triangle and the color information R 0 , G 0 , B 0 , R 1 , G 1 , B 1 , R 2 , G 2 , and B 2  and the Z information Z 0 , Z 1 , and Z 2  (step S 201 ). The triangle setting-up unit then finds the horizontal differentials dRX, dGX, dBX, and dZX and the vertical differentials dRY, dGY, dBY, and dXY (step S 202 ). 
     Here, IY=0 is set (step S 203 ). The left-side XYRGBZ start-point generating unit  14  finds the left side from a vector of the side of the triangle, and then finds horizontal start-point X, R, G, B, and Z values in the vertical direction IY of that side (step S 204 ). 
     The RGB correcting unit  15  determines whether the found points are overlaid on boundaries defined by the length DDY of the specified minimum color in the vertical direction of the tetragon surrounding the triangle (step S 205 ). When determining that the points are overlaid (Yes at step S 205 ), the RGB correcting unit  15  updates the start point RGB values of IY in the horizontal direction (step S 206 ). The horizontal X DDA unit  16 X then finds an X value in the horizontal direction (step S 207 ). When the RGB correcting unit  15  determines that the points are not overlaid (No at step S 205 ), the procedure returns to step S 207 . 
     Next, the horizontal RGB DDA unit  16 R finds RGB in the horizontal direction, and the horizontal Z DDA unit  16 Z finds a Z value in the horizontal direction (step S 208 ). The hidden-surface processing unit  2  then finds an address in the Z-buffer memory storage area  71  of the main memory  7  (step S 209 ), and then reads the address in the Z-buffer memory storage area  71  of the main memory  7  (step S 210 ). It is then determined whether the Z value of the Z buffer is larger than the Z value found by the horizontal Z DDA unit  16  (step S 211 ). If it is determined as No, the procedure jumps to step S 215  (which will be described further below). If it is determined that the Z value is larger than the found Z value, the Z value found by the horizontal Z DDA unit  16  is written in the Z buffer memory storage area  71  of the main memory (step S 212 ). Here, steps S 208  through S 212  are the operation of the hidden-surface process. 
     Furthermore, the RGB correcting unit  15  determines whether the found points are overlaid on boundaries defined by the length DDY of the specified minimum color in the horizontal direction of the tetragon surrounding the triangle (step S 213 ). If it is determined as No (No at step S 213 ), the procedure jumps to step S 215  (which will be described further below). If it is determined as Yes (Yes at step S 213 ), the RGB values of IY in the horizontal direction are updated, and are then sent to the image processing unit (step S 214 ). 
     Still further, it is determined whether all pixels have been processed in the horizontal direction (step S 215 ). If it is determined as No, the procedure returns to step S 207 . On the other hand, if it is determined that all pixels have been processed (Yes at step S 215 ), IY=IY+1 is set (step S 216 ). It is then determined whether all pixels have been processed in the vertical direction (step S 217 ). If it is determined that all pixels have been processed (Yes at step S 217 ), the process ends. 
       FIG. 12  is a block diagram of the triangle setting-up unit in the rendering processing unit of the image forming apparatus according to the embodiment. A horizontal-differential-R generating unit  1301  finds a differential dRX of the R value in the horizontal direction based on the triangle&#39;s plane equation. As described above, dRX is an abbreviation of dR/dX. The same goes for the following description. 
     Also, a vertical-differential-R generating unit  1302  finds a differential dRY of the R value in the vertical direction based on the triangle&#39;s plane equation. A horizontal-differential-G generating unit  1303  finds a differential dGX of the G value in the horizontal direction based on the triangle&#39;s plane equation. A vertical-differential-G generating unit  1304  finds a differential dGY of the G value in the vertical direction based on the triangle&#39;s plane equation. 
     A horizontal-differential-B generating unit  1305  finds a differential dBX of the B value in the horizontal direction based on the triangle&#39;s plane equation. A vertical-differential-B generating unit  1306  finds a differential dBY of the B value in the vertical direction based on the triangle&#39;s plane equation. A horizontal-differential-Z generating unit  1307  finds a differential dZX of the Z value in the horizontal direction based on the triangle&#39;s plane equation. A vertical-differential-Z generating unit  1308  finds a differential dZY of the Z value in the vertical direction based on the triangle&#39;s plane equation. 
       FIG. 13  is a block diagram of the horizontal-differential-R generating unit shown in  FIG. 12 .  FIG. 13  is a hardware representation of dR/dX of Equation (1-1). 
       FIG. 14  is a block diagram of the vertical-differential-R generating unit shown in  FIG. 12 .  FIG. 14  is a hardware representation of dR/dY of Equation (1-2). 
       FIG. 15  is a block diagram of a horizontal RGB DDA unit  16 R shown in  FIG. 8 . Registers  16 R 1 ,  16 G 2 , and  16 B 3  store R G, and B start-point values, respectively, in the horizontal direction from the left-side XYRGBZ start-point generating unit  14 . Registers  16 R 4 ,  16 G 5 , and  16 B 6  store R G, and B differentials, respectively, in the horizontal direction from the triangle setting-up unit  13 . Adders  16 R 7 ,  16 G 8 , and  16 B 9  each perform an adding operation for a DDA process of R, G, and B, respectively. 
     The multiplexers (MUX)  16 R 10 ,  16 G 11 , and  16 G 12  transfer the start point values of R, G, and B of the registers  16 R 1 ,  16 G 2 , and  163  to registers  16 R 13 ,  16 G 14 , and  16 B 15  as initial values in the DDA process of R, G, and B, respectively. Then, during the DDA process, these multiplexers transfer outputs of adders  16 R 7 ,  16 G 8 , and  16 B 9  to the registers  16 R 13 ,  16 G 14 , and  16 B 15 , respectively. The registers  16 R 13 ,  16 G 14 , and  16 B 15  stores the results of the DDA process of R, G, and B, respectively. 
       FIG. 16  is a block diagram of the horizontal Z DDA unit in the rendering processing unit. A register  16 Z 1  stores a start point value in the horizontal direction from the left-side XYRGBZ start-point generating unit  14 . A register  16 Z 2  stores a differential of Z in the horizontal direction from the triangle setting-up unit  13 . An adder  16 Z 5  performs an adding operation for a DDA process on Z. A MUX  16 Z 3  transfers a start point value of the register  16 Z 1  to a register  16 Z 4  as an initial value for the DDA process on Z and, thereafter during the DDA process, transfers an output from the adder  16 Z 5  to the register  16 Z 4 . The register  16 Z 4  stores the results of the DDA process on Z. 
       FIG. 17  is a block diagram of the left-side XYRGBZ start-point generating unit in the rendering processing unit.  FIG. 18  is a diagram for explaining calculation of a change ratio of each RGBZ with respect to the x axis direction and the y axis direction.  FIG. 19  is a diagram for explaining generation of a gradient fill of a triangle from the calculated change ratio of each RGBZ with respect to the x axis direction and the y axis direction. 
     A left-side searching unit  1401  searches for a left side in Equation 1 based on the directions of the sides extending from the respective end points of the triangle shown in  FIG. 18 , and then transfers X and Y values representing the start point and X and Y values representing the end point to a differential X calculating unit  1402  and the X and Y values representing the start point to each of the registers  1403  and  1404 . 
     The differential X calculating unit  1402  receives the X and Y values representing the start point and the X and Y values representing the end point from the left-side searching unit  1401 , finds its differential in the vertical direction, that is, (end point X-start point X)/(end point Y-start point Y), and then transfers the result to a register  1405 . The register  1403  stores the start point X value from the left-side searching unit  1401 . The register  1404  stores the start point Y value from the left-side searching unit  1401 . The register  1405  stores the differential X value from the differential X calculating unit.  1402   
     An adder  1406  performs an adding operation for DDA on X in the vertical direction. An adder  1407  performs an adding operation for DDA on Y in the vertical direction. The MUX  1408  transfers the start point X value of the register  1403  to a register  1410  as an initial value for a DDA process on X in the vertical direction and, thereafter during the DDA process, transfers an output from the adder  1406  to the register  1410 . 
     The MUX  1409  transfers the start point Y value of the register  1404  to a register  1411  as an initial value for a DDA process on Y in the vertical direction and, thereafter during the DDA process, transfers an output from an adder  1407  to a register  1411 . The register  1410  stores the results of the DDA process on X in the vertical direction. The register  1411  stores the results of the DDA process on Y in the vertical direction. 
     A subtracter  1412  subtracts the start point X value from the X value of the results of the DDA process on X in the vertical direction stored in the register  1410 , finds an X differential from the start point X value of the left side being processed, and then transfers the X differential to multipliers  1514 ,  1516 , and  1518  of the RGB correcting unit  15 . A subtracter  1413  subtracts the start point Y value from the Y value of the results of the DDA process on Y in the vertical direction stored in the register  1411 , finds a Y differential from the start point Y value of the left side being processed, and then transfers the Y differential to multipliers  1515 ,  1517 , and  1519  of the RGB correcting unit  15 . 
     From the differentials in the X and Y directions found in the subtracters  1412  and  1413  and the differentials found in the triangle setting-up unit  13 , the RGB correcting unit  15 , which is a unit that performs a process of interpolating the RGBZ values, performs two-dimensional interpolation to find RGBZ start points of the left side in the horizontal direction. 
     The multiplier  1514  multiplies the horizontal differential dRX from the triangle setting-up unit  13  by the vertical X differential from the subtracter  1412 , and then transfers the multiplication result to the adder  1522 . The multiplier  1515  multiplies the horizontal differential dRY from the triangle setting-up unit  13  by the vertical Y differential from the subtracter  1413 , and then transfers the multiplication result to the adder  1522 . 
     The multiplier  1516  multiplies the horizontal differential dGX from the triangle setting-up unit  13  by the vertical X differential from the subtracter  1412 , and then transfers the multiplication result to the adder  1523 . The multiplier  1517  multiplies the horizontal differential dGY from the triangle setting-up unit  13  by the vertical Y differential from the subtracter  1413 , and then transfers the multiplication result to the adder  1523 . 
     The multiplier  1518  multiplies the horizontal differential dBX from the triangle setting-up unit  13  by the vertical X differential from the subtracter  1412 , and then transfers the multiplication result to the adder  1524 . The multiplier  1519  multiplies the horizontal differential dBY from the triangle setting-up unit  13  by the vertical Y differential from the subtracter  1413 , and then transfers the multiplication result to the adder  1524 . 
     The multiplier  1520  multiplies the horizontal differential dZX from the triangle setting-up unit  13  by the vertical X differential from the subtracter  1412 , and then transfers the multiplication result to the adder  1525 . The multiplier  1521  multiplies the horizontal differential dZY from the triangle setting-up unit  13  by the vertical Y differential from the subtracter  1413 , and then transfers the multiplication result to the adder  1525 . 
     The adder  1522  adds the multiplication results of the multipliers  1514  and  1515 . The adder  1523  adds the multiplication results of the multipliers  1516  and  1517 . The adder  1524  adds the multiplication results of the multipliers  1518  and  1519 . The adder  1525  adds the multiplication results of the multipliers  1520  and  1521 . 
     A register  1426  stores an X value of the result of the X DDA process on the left side in the vertical direction. A register  1427  stores a Y value of the result of the Y DDA process on the left side in the vertical direction. A register  1528  updates an R value of the result of RGB interpolation on the left side in the vertical direction if a Y-direction update signal from the RGB correcting unit  15  is ON. A register  1529  updates a G value of the result of RGB interpolation on the left side in the vertical direction if a Y-direction update signal from the RGB correcting unit  15  is ON. A register  1530  updates a B value of the result of RGB interpolation on the left side in the vertical direction if a Y-direction update signal from the RGB correcting unit  15  is ON. A register  1531  updates a Z value of the result of RGB interpolation on the left side in the vertical direction if a Y-direction update signal from the RGB correcting unit  15  is ON. 
       FIG. 20  is a block diagram of a horizontal X DDA unit of the rendering processing unit. A register  16 X 1  stores a start point value of an X value in the horizontal direction from the left-side XYRGBZ start-point generating unit  14 . A register  16 X 2  stores a start point value of a Y value in the horizontal direction from the left-side XYRGBZ start-point generating unit  14 . An adder  16 X 3  performs an adding operation for a DDA process on X. A MUX  16 X 4  transfers the start point X value of the register  16 X 1  to a register  16 X 5  as an initial value for a DDA process on X and, thereafter during the DDA process, transfers an output from the adder  16 X 3  to the register  16 X 5 . The register  16 X 5  stores the result of the DDA process on X. 
       FIG. 21  is a block diagram of the memory address generating unit of the rendering processing unit. A register  1801  stores a Y value of an output from the horizontal X DDA unit  16 X. A register  1802  stores an X value of an output from the horizontal X DDA unit  16 X. A multiplier  1805  multiplies the Y value stored in the register  1801  by the bandwidth. An adder  1806  adds the multiplication result from the multiplier  1805  and the X value stored in the register  1802  together to find a physical address. 
       FIG. 22  is a block diagram of the RGB correcting unit in the rendering processing unit. A MIN X generating unit  1501  receives X coordinates X 0 , X 1 , and X 2  of the end points of the triangle from the command analyzing unit  12 , finds a minimum X value, and then transfers the found minimum X value to a subtracter  1503 . A MIN Y generating unit  1502  receives Y coordinates Y 0 , Y 1 , and Y 2  of the end points of the triangle from the command analyzing unit  12 , finds a minimum Y value, and then transfers the found minimum Y value to a subtracter  1504 . 
     The subtracter  1503  receives the horizontally-interpolated X value from the horizontal X DDA unit  16 X and the MIN X value from the MIN X generating unit  1501 , and finds, as shown in  FIG. 10 , a differential from the MIN X value in the horizontal direction of the tetragon surrounding the triangle. 
     The subtracter  1504  receives the Y value from the horizontal X DDA unit  16 X and the MIN Y value from the MIN Y generating unit  1502 , and finds, as shown in  FIG. 10 , a differential from the MIN Y value in the vertical direction of the tetragon surrounding the triangle. 
     A divider  1505  receives a length DDX of the minimum color in the horizontal direction as shown in  FIG. 10  from the parameter storage unit  801  ( FIG. 6 ), divides the differential from the subtracter  1503  by the length DDX, and then transfers the result to a decimal-point-0 determining unit  1507 . A divider  1506  receives a length DDY of the minimum color in the vertical direction from the parameter storage unit  801 , divides the differential from the subtracter  1504  by the length DDY, and then transfers the result to a decimal-point-0 determining unit  1508 . 
     The decimal-point-0 determining unit  1507  receives the result of the divider  1505  to confirm that no decimal point is present (the differential is divisible), and then determines whether the points are overlaid on the mesh as shown in  FIG. 10  in the horizontal direction. The decimal-point-0 determining unit  1508  receives the result of the divider  1506  to confirm that no decimal point is present (the differential is divisible), and then determines whether the points are overlaid on the mesh as shown in  FIG. 10  in the vertical direction. 
     An OR circuit  1509  receives a horizontal rendering start signal from the controller  11  ( FIG. 8 ). If horizontal rendering has been started, the OR circuit  1509  unconditionally generates an update signal in the X direction. A register  1510  stores the X-direction update signal from the OR circuit  1509 . A register  1511  stores a Y-direction update signal from the decimal-point-0 determining unit  1508 . 
       FIG. 23  is a block diagram of the hidden-surface processing unit in the image forming apparatus according to the embodiment. A register  21  stores a Z value from the rendering processing unit  1 . A register  22  stores a Z value read from the Z buffer memory  71  ( FIG. 4 ) of the main memory  7 . 
     A comparator  23  compares the values of the registers  21  and  22  to determine whether pixels being processed by the rendering processing unit  1  can be displayed. A Z-buffer-address generating unit  24  stores a Z-buffer memory address from the rendering processing unit  1 . A controller  26  controls the entirety of the hidden-surface processing unit  2 . 
       FIG. 24  is a block diagram of the image processing unit of the image forming apparatus according to the embodiment. The color converting unit  31  receives the color information (RGB) and an address on the band for each pixel from the rendering processing unit  1  for color conversion, and generates CMYK data for transfer to the gray-scale processing unit  32 . The gray-scale processing unit  32  receives the CMYK values and addresses on the band from the color converting unit  31  for performing a gray-scale processing, and then transfers the result to the memory ARB I/F  78 . A parameter storage unit  33  temporarily stores parameters of the color converting unit and the gray-scale processing unit. 
     A write address generating unit  34  generates addresses in the binary band memory area  72  for C, M, Y, and K colors of the main memory  7 . The memory ARB I/F  78  interfaces with the memory ARB  70 , and writes, based on the addresses from the write address generating unit  34 , data after the gray-scale process in the main memory  7 . A controller  36  controls the entirety of the image processing unit  3 . 
       FIG. 25  is a flowchart of an image processing operation to be preformed in the image forming apparatus according to the embodiment. The controller  36  sets a color conversion table of the color converting unit  31  (step S 301 ). The controller  36  then sets an origin address for each color in each color&#39;s band memory area in the main memory to the parameter storage unit (step S 302 ). The controller  36  then sets the size of a threshold in the gray-scale processing unit (step S 303 ). The controller  36  then sets the threshold in the gray-scale processing unit (step S 304 ). 
     The color converting unit  31  receives the color information and the memory address from the rendering processing unit  1  (step S 305 ). The color converting unit  31  then performs color conversion (step S 306 ). The gray-scale processing unit  32  then performs a gray-scale process (step S 307 ). It is then determines whether all pixels have been processed (step S 308 ). If it is determined as No (No at step S 308 ), the procedure returns to step S 305 . If it is determined as Yes (Yes at step S 308 ), the procedure ends. 
       FIG. 26  is a block diagram of the color converting unit in the image processing unit. A lattice-point selecting unit  311  receives image (RGB) data from the rendering processing unit  1 , divides each of the R, G, and B components into upper N bits as HR, HG, and HB and lower (8-N) bits as DR, DG, and DB, respectively. Then, one of six tetrahedrons of a cube including eight lattice points that corresponds to the data is determined as TYPE, which is then transferred to a lattice-point address generating unit  314  and a lattice-point interpolation processing unit  312 . 
     The lattice-point interpolation processing unit  312  interpolates the tetrahedron with DR, DG, and DB from the lattice-point selecting unit  311  based on the C, M, Y, and K values of the four points of the tetrahedron supplied from a data cutting-out unit  315  to find C, M, Y, and K data. 
     A color-conversion-table memory  313  stores lattice-point information in a format shown in  FIG. 26 , receives the addresses from the lattice-point address generating unit  314 , and transfers the lattice-point information to the data cutting-out unit  315 . The lattice-point address generating unit  314  finds a lattice-point address in an area of the color-conversion-table memory  313  from the HR, HG, HB, DR, DG, DB, and TYPE from the lattice-point selecting unit  311 . 
     The data cutting-out unit  315  cuts out four parameters for allowing the lattice-point interpolation processing unit  312  to interpolate the lattice data received from the color-conversion-table memory  313 . 
       FIG. 27  is a flowchart of the operation of the color converting unit in the image processing unit. The lattice-point selecting unit  311  converts the upper N bits of the input image (RGB) data to HR, HG, and HB and the lower (8-N) bits thereof to DR, DG, and DB (step S 401 ). The lattice-point selecting unit  311  then finds TYPE from the found HR, HG, and HB (step S 402 ). The lattice-point generating unit  314  then finds a lattice-point address (step S 403 ). 
     The lattice-point interpolation processing unit  312  reads the lattice-point data from the color-conversion-table memory  313  (step S 404 ), and then performs a process of interpolation of the lattice-point data by using the read lattice-point data to find C, M, Y, and K data (step S 405 ). 
       FIG. 28  is a block diagram of a gray-scale processing unit in the image processing unit. A threshold-matrix-storage and address-generating unit  3201  receives the size of the threshold to generate an address of a threshold-matrix storage unit  3202 . The threshold-matrix storage unit  3202  stores threshold matrices of various types. A data distributing unit  3203  receives thresholds for each of the C, M, Y, and K colors from the threshold-matrix storage unit  3202 , and then distributes the thresholds to threshold comparing units  3204  through  3207  for the respective colors. 
     The comparing unit  3204  receives the threshold of C color from the data distributing unit  3203  and pixel data of C color from the color converting unit  31  ( FIG. 24 ) for comparison, and then generates C-color data after the gray-scale process. The comparing unit  3205  receives the threshold of M color from the data distributing unit  3203  and pixel data of M color from the color converting unit  31  for comparison, and then generates M-color data after the gray-scale process. The comparing unit  3206  receives the threshold of Y color from the data distributing unit  3203  and pixel data of Y color from the color converting unit  31  for comparison, and then generates Y-color data after the gray-scale process. The comparing unit  3207  receives the threshold of K color from the data distributing unit  3203  and pixel data of K color from the color converting unit  31  for comparison, and then generates K-color data after the gray-scale process. 
     A fixed-length data generating unit  3208  sequentially receives C-color data after the gray-scale process from the comparing unit  3204  for conversion to fixed-length data. A fixed-length data generating unit  3209  sequentially receives M-color data after the gray-scale process from the comparing unit  3205  for conversion to fixed-length data. A fixed-length data generating unit  3210  sequentially receives Y-color data after the gray-scale process from the comparing unit  3206  for conversion to fixed-length data. A fixed-length data generating unit  3211  sequentially receives K-color data after the gray-scale process from the comparing unit  3207  for conversion to fixed-length data. 
     A FIFO  3212  receives data from the C-color fixed-length data generating unit  3208  for temporary storage. A FIFO  3213  receives data from the M-color fixed-length data generating unit  3209  for temporary storage. A FIFO  3214  receives data from the Y-color fixed-length data generating unit  3210  for temporary storage. A FIFO  3215  receives data from the K-color fixed-length data generating unit  3211  for temporary storage. A MUX  3216  receives data from each color&#39;s FIFO for sequential selection and then transfer to the memory ARB I/F  78 . 
     A CMYK address generating unit  3217  adds an origin address of each color to a head address, which is a physical address from the color converting unit  31 , to find a head address for each color, and then transfers the head address to the MUX  3218 . 
     The MUX  3218  selects, from among the head addresses for the respective colors, a head address of the image data after the gray-scale process that is to be written in the main memory  7 , and transfers the head address to the write address generating unit  34  ( FIG. 24 ). 
       FIG. 29  is a flowchart of the operation of the gray-scale processing unit in the image processing unit. The comparators  3204  through  3207  compares the relevant threshold (C, M, Y or K) data and the relevant C, M, Y, or K data for binarization (step S 501 ). Then, the binarized (C, M, Y, and K) data is added to the fixed-length data (step S 502 ). The fixed-length data generating units  3208  through  3211  each determine whether the data has grown to the fixed length (step S 503 ). If the data has grown to the fixed length, the fixed data of C, M, Y, and K is written in the FIFOs (step S 504 ), and a dither address is counted up in the horizontal direction (step S 505 ). The controller  3219  then determines whether the dither address in the horizontal direction exceeds the size in the horizontal direction (step S 506 ). If the dither address exceeds the size (Yes at step S 506 ), the controller  3219  clears the dither address in the horizontal direction (step S 507 ). 
       FIG. 30  is a block diagram of a fixed-length data generating unit in the image processing unit. A shifter  3281  receives binary data from the comparator  3204  ( FIG. 28 ) to shift the data by a shift value stored in a register  3286  for transfer to an OR unit  3282 . The OR unit  3282  performs an OR process on the binary data shifted by the shifter  3281  for output to a register  3284 . The register  3284  stores the received binary data subjected to the OR process in the OR unit  3282 . A register  3283  stores data reaching the fixed length. 
     An adder  3285  increments by “1” every time it receives binary data from the comparator  3204  ( FIG. 28 ). The register  3286  stores the shift value. 
       FIG. 31  is a diagram for explaining an exemplary modification of the image forming apparatus according to the embodiment.  FIG. 31  is different from  FIG. 4  in that the memory  7  is provided with a multi-valued RGB memory area  73 . With the multi-valued RGB memory area  73  being provided, the data subjected to the rendering process by the rendering processing unit  1  once retained in the multi-valued RGB memory area  73 , and is then read therefrom by the image processing unit  3  for color conversion and a gray-scale process. After the gray-scale process, the data is rendered in the binary band memory areas. A multi-valued memory format  701  shown in  FIG. 31  is an exemplary format in the multi-valued RGB memory. 
       FIG. 32  is a diagram for explaining another exemplary modification of the image forming apparatus according to the embodiment.  FIG. 32  is different from  FIG. 4  in that the Z buffer memory storage area  71  in the memory  7  is structured to be used for each band. In  FIG. 32 , an example of a Z-buffer band memory format  702  is shown in which the memory  7  includes the Z buffer memory storage area  71  in which the rendering processing unit  1  writes data for each band. 
     In the above, an example of providing RGB color to each end point of a three-dimensional polygon for interpolation has been described. Similarly, CMY, CMYK, Lab, or the like will suffice. Also, even for monochrome graphics, the present invention can be achieved in consideration of the gray scale of one vector, not that of three vectors as for RGB. 
     Also, each end point of a three-dimensional polygon may be provided with X and Y addresses of a texture mapping pattern for interpolation, thereby achieving texture mapping. 
       FIG. 33  is a diagram of an example in which the image forming apparatus according to the embodiment is applied to a color copying machine. This color printer is a four-drum, tandem-engine-type image forming apparatus in which images of four colors (Y, M, C, K) are formed by separate image forming systems  3601 Y,  3601 M,  3601 C, and  3601 K, and are then combined. 
     The image forming systems  3601 Y,  3601 M,  3601 C, and  3601 K include photoreceptors as image carriers, for example, organic photoreceptor (OPC) drums  3602 Y,  3602 M,  3602 C, and  3602 K, respectively, each having a small diameter. In these systems, the following components are disposed: charging rollers  3603 Y,  3603 M,  3603 C, and  3603 K as charging units to surround these OPC drums  3602 Y,  3602 M,  3602 C, and  3602 K, respectively, from the upstream of image forming; developing units  3604 Y,  3604 M,  3604 C, and  3604 K for developing electrostatic latent images on the OPC drums  3602 Y,  3602 M,  3602 C, and  3602 K, respectively, with a developer to obtain toner images of Y, M, C, and K colors; cleaning units  3605 Y,  3605 M,  3605 C, and  3605 K; static eliminating units  3606 Y,  3606 M,  3606 C, and  3606 K, etc. 
     Beside the developing units  3604 Y,  3604 M,  3604 C, and  3604 K, toner bottle units  3607 Y,  3607 M,  3607 C, and  3607 K are disposed for supplying a Y toner, an M toner, a C toner, and a K toner to the developing units  3604 Y,  3604 M,  3604 C, and  3604 K. Also, the image forming systems  3601 Y,  3601 M,  3601 C, and  3601 K are provided with separate optical writing units  3608 Y,  3608 M,  3608 C, and  3608 K, respectively. These optical writing units  3608 Y,  3608 M,  3608 C, and  3608 K include optical components, such as laser diode (LD) light sources  3609 Y,  3609 M,  3609 C, and  3609 K as laser light sources, collimate lenses  3610 Y,  3610 M,  3610 C, and  3610 K, and fθ lenses  3611 Y,  3611 M,  3611 C, and  3611 K; polygon mirrors  3612 Y,  3612 M,  3612 C, and  3612 K as deflective scanning units; reflecting mirrors  3613 Y,  3613 M,  3613 C,  3613 K,  3614 Y,  3614 M,  3614 C, and  3614 K; and other components, respectively. 
     The image forming systems  3601 Y,  3601 M,  3601 C, and  3601 K are vertically arranged. On their right side, a transfer belt unit  3615  is disposed to make contact with the OPC drums  3602 Y,  3602 M,  3602 C, and  3602 K, respectively. The transfer belt unit  3615  is extended over rollers  3617  through  3620  and is rotationally driven by a driving source not shown. The apparatus is provided at its lower portion with a paper feeding tray  3621  with transfer sheets as a transfer material accommodated therein. The apparatus is provided at its upper portion with a fixing unit  3622 , a paper delivery roller  3623 , and a paper delivery tray  3624 . 
     At the time of image forming, in the image forming systems  3601 Y,  3601 M,  3601 C, and  3601 K, the OPC drums  3602 Y,  3602 M,  3602 C, and  3602 K are rotationally driven by the driving source not shown and are uniformly charged with the charging rollers  3603 Y,  3603 M,  3603 C, and  3603 K. Then, the optical writing units  3608 Y,  3608 M,  3608 C, and  3608 K optically writes in the OPC drums  3602 Y,  3602 M,  3602 C, and  3602 K based on the image data of the respective colors. With this, electrostatic latent images are formed on the OPC drums  3602 Y,  3602 M,  3602 C, and  3602 K. 
     These electrostatic latent images are formed on the OPC drums  3602 Y,  3602 M,  3602 C, and  3602 K are developed by the developing units  3604 Y,  3604 M,  3604 C, and  3604 K to form toner images of Y, M, C, K colors. On the other hand, a transfer sheet is supplied from the paper feeding tray  3621  to a paper feeding roller  3625 , and is conveyed by a conveyor system vertically in the direction of the image forming systems  3601 Y,  3601 M,  3601 C, and  3601 K. This transfer sheet is electrostatically attached and held by a transfer belt  3616  and is conveyed by this transfer belt  3616 . Further, with a transfer bias being applied by a transfer bias applying unit not shown, toner images of Y, M, C, and K colors on the OPC drums  3602 Y,  3602 M,  3602 C, and  3602 K are sequentially overlaid with each other for transfer. Thus, a full-color image is formed. The full-color image is then fixed to the transfer sheet by the fixing unit  3622 . The transfer sheet is then delivered by the paper delivery roller  3623  to the paper delivery tray  3624 . 
     In the image forming apparatus according to the present embodiment, the rendering processing unit provided to the image forming apparatus analyzes the rendering command in the image data, and then performs a rendering process on the image data through three-dimensional shape modeling. The hidden-surface processing unit then performs a hidden-surface process. The image processing unit then performs an image processing. Then, image output is performed by the printer engine. With this structure, the image forming apparatus receives three-dimensional graphic data for image output, and therefore the amount of data transferred to the image forming apparatus can be made small. Also, instead of image output as bit map data, images can be formed at the resolution of the image forming apparatus. Therefore, the output image quality can be increased. Furthermore, a three-dimensional rendering process is performed inside of the image forming apparatus. Therefore, a high-speed image process can be performed. 
     Also, the rendering processing unit calculates color information including gray-scale information at each vertex of the triangle and differentials in the x axis direction and the y axis direction with respect to the Z value information indicating coordinate values in the depth-direction axis with a point of intersection of the plane perpendicular to the y axis direction and one of two sides of the triangle as a start point. Then, by using the calculated differentials in the x and y directions, the rendering processing unit calculates color information and Z-value information at the calculated start point through interpolation. Then, by using the position information, color information, and Z-value information at the calculated start point and the calculated differentials, the rendering processing unit calculates position information including the Z-value information and color information at pixel points between the start point to another point of intersection of the plane and the other one of the sides of the triangle through interpolation. The hidden-surface processing unit then performs a hidden-surface process on the image data by using the Z values for the respective points calculated by the horizontal interpolating unit. With this structure, color information and depth information of a plurality of triangles to be rendered can be accurately and quickly interpolated. Then, with a hidden-surface process, image output can be achieved. 
     Furthermore, the rendering processing unit calculates a resolution from the position information of each vertex of the triangles and a tetragon surrounding each of the triangles being divided by the minimum color length in the x axis and the minimum color length in the y axis. With the calculated resolution, the amount of change in the color information in color interpolation in the x axis direction and the y axis direction is controlled. The changing resolution (mesh) is found from the minimum color length in the vertical direction of the specified tetragon and the minimum color length in the horizontal direction thereof, thereby allowing the color information correcting unit to control a color change in color interpolation in the horizontal and vertical directions. Thus, even in an image forming apparatus that is generally low in gray scale, halftone can be clearly output. 
     Although the invention has been described with respect to a specific embodiment for a complete and clear disclosure, the appended claims are not to be thus limited but are to be construed as embodying all modifications and alternative constructions that may occur to one skilled in the art which fairly fall within the basic teaching herein set forth.