M9圖形處理器芯片FPGA平臺驗證規范10_第1頁
M9圖形處理器芯片FPGA平臺驗證規范10_第2頁
M9圖形處理器芯片FPGA平臺驗證規范10_第3頁
M9圖形處理器芯片FPGA平臺驗證規范10_第4頁
M9圖形處理器芯片FPGA平臺驗證規范10_第5頁
已閱讀5頁,還剩345頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

圖2。圖SEQ圖\*ARABIC2FPGA原型驗證平臺示意圖XX系統簡單介紹添加XX芯片功能簡介及系統結構框圖。FPGA原型驗證平臺的搭建如上所述,XX芯片軟硬件協同驗證包括虛擬原型驗證平臺和FPGA原型驗證平臺驗證,本文介紹主要包括FPGA原型驗證平臺驗證相關內容。驗證環境及相關工具軟硬件協同驗證平臺的搭建軟硬件協同驗證平臺采用軟件自動比較的方法,進行自動化驗證。每一個測試點都同時在VistualStual環境中,systemverilog模型中和HDL描述的硬件系統中運行,比較繪制結果,并且將模型和硬件系統做模塊級輸出比較,以確保所以功能的正確性。具體方法如下:在VistualStudio環境下,編寫測試特定功能點的OpenGL命令序列,并在此軟件環境下,調試正確(以正確繪制出希望的圖形為準);將調試正確的OpenGl命令序列送入到Tornado2.2嵌入式軟件里,由此嵌入式系統將命令序列翻譯為M9可以接收的二進制命令序列,并由PCI總線送入到M9系統里;將M9輸入的繪制結果輸出到VGA顯示器中,將此結果和VistualStudio軟件繪制結果進行對比;如果繪制結果基本一致,則說明此測試點功能正確,如果結果不一致,通過ChipScope監測相關寄存器和虛擬仿真平臺進行仿真,找出引起功能不正確的邏輯設計,修改設計后重新測試此功能點。測試平臺各模塊的關系如圖2-x所示:2-x:測試平臺各模塊的關系圖添加驗證平臺的架構,及基于此平臺的驗證工作原理。地址空間分配添加XX芯片存儲器及各功能模塊寄存器地址分配。1、根據PCIcore+PCIBL+M9測試用例中,PCI核配置空間中的基址寄存器配置值為表2-x:表2-X基址寄存器的配置值:基址寄存器地址值bar02efff000bar130000000bar22f000000bar340000000target_base_address2f000000(目前只要該地址與target_model中地址匹配即可)2、M9中各模塊用戶可訪問寄存器地址分配為表2-x:表2-X用戶可訪問寄存器地址分配及相關說明:寄存器名稱位寬讀寫權限地址[12:0]顯控模塊寄存器(0001)CTRL32R/W13'h0200STAT32R/W13'h0204HTIM32R/W13'h0208VTIM32R/W13'h020CHVLEN32R/W13'h0210C0XY32R/W13'h0230C0BAR32R/W13'h0234CCR032R/W13'h0240C1XY32R/W13'h0270C1BAR32R/W13'h0274CCR132R/W13'h0280DITHER_CTRL_ADR32R/W13'h021CDITHER_RAM_CTRL_ADR32R/W13'h0220DITHER_MEM_DATA_ADR32R/W13'h0224SOURCE_RES32R/W13'h0238TARGET_RES32R/W13'h0228SCALER_STEP32R/W13'h022CPCLT32R/W13'h0300幀緩沖模塊寄存器(0100)FB_MODE32R/W13'h0800預處理模塊寄存器(0101)CMD_ADDRESS32R/W13'h0A00CMD_WORD_COUNT32R/W13'h0A042D模塊寄存器(1010)X2D_REG_DST_X32R/W13'h141CX2D_REG_DST_Y32R/W13'h1420X2D_REG_DST_WIDTH32R/W13'h140CX2D_REG_DST_HEIGHT32R/W13'h1410X2D_REG_DST_LINE_START32R/W13'h1400X2D_REG_DST_LINE_END32R/W13'h1404X2D_REG_BRUSH_Y_X32R/W13'h1474X2D_REG_BRUSH_DATA032R/W13'h1480X2D_REG_BRUSH_DATA132R/W13'h1484X2D_REG_BRUSH_DATA232R/W13'h1488X2D_REG_BRUSH_DATA332R/W13'h148CX2D_REG_BRUSH_DATA432R/W13'h1490X2D_REG_BRUSH_DATA532R/W13'h1494X2D_REG_BRUSH_DATA632R/W13'h1498X2D_REG_BRUSH_DATA732R/W13'h149CX2D_REG_BRUSH_DATA832R/W13'h14A0X2D_REG_BRUSH_DATA932R/W13'h14A4X2D_REG_BRUSH_DATA1032R/W13'h14A8X2D_REG_BRUSH_DATA1132R/W13'h14ACX2D_REG_BRUSH_DATA1232R/W13'h14B0X2D_REG_BRUSH_DATA1332R/W13'h14B4X2D_REG_BRUSH_DATA1432R/W13'h14B8X2D_REG_BRUSH_DATA1532R/W13'h14BCX2D_REG_BRUSH_DATA1632R/W13'h14C0X2D_REG_BRUSH_DATA1732R/W13'h14C4X2D_REG_BRUSH_DATA1832R/W13'h14C8X2D_REG_BRUSH_DATA1932R/W13'h14CCX2D_REG_BRUSH_DATA2032R/W13'h14D0X2D_REG_BRUSH_DATA2132R/W13'h14D4X2D_REG_BRUSH_DATA2232R/W13'h14D8X2D_REG_BRUSH_DATA2332R/W13'h14DCX2D_REG_BRUSH_DATA2432R/W13'h14E0X2D_REG_BRUSH_DATA2532R/W13'h14E4X2D_REG_BRUSH_DATA2632R/W13'h14E8X2D_REG_BRUSH_DATA2732R/W13'h14ECX2D_REG_BRUSH_DATA2832R/W13'h14F0X2D_REG_BRUSH_DATA2932R/W13'h14F4X2D_REG_BRUSH_DATA3032R/W13'h14F8X2D_REG_BRUSH_DATA3132R/W13'h14FCX2D_REG_BRUSH_DATA3232R/W13'h1500X2D_REG_BRUSH_DATA3332R/W13'h1504X2D_REG_BRUSH_DATA3432R/W13'h1508X2D_REG_BRUSH_DATA3532R/W13'h150CX2D_REG_BRUSH_DATA3632R/W13'h1510X2D_REG_BRUSH_DATA3732R/W13'h1514X2D_REG_BRUSH_DATA3832R/W13'h1518X2D_REG_BRUSH_DATA3932R/W13'h151CX2D_REG_BRUSH_DATA4032R/W13'h1520X2D_REG_BRUSH_DATA4132R/W13'h1524X2D_REG_BRUSH_DATA4232R/W13'h1528X2D_REG_BRUSH_DATA4332R/W13'h152CX2D_REG_BRUSH_DATA4432R/W13'h1530X2D_REG_BRUSH_DATA4532R/W13'h1534X2D_REG_BRUSH_DATA4632R/W13'h1538X2D_REG_BRUSH_DATA4732R/W13'h153CX2D_REG_BRUSH_DATA4832R/W13'h1540X2D_REG_BRUSH_DATA4932R/W13'h1544X2D_REG_BRUSH_DATA5032R/W13'h1548X2D_REG_BRUSH_DATA5132R/W13'h154CX2D_REG_BRUSH_DATA5232R/W13'h1550X2D_REG_BRUSH_DATA5332R/W13'h1554X2D_REG_BRUSH_DATA5432R/W13'h1558X2D_REG_BRUSH_DATA5532R/W13'h155CX2D_REG_BRUSH_DATA5632R/W13'h1560X2D_REG_BRUSH_DATA5732R/W13'h1564X2D_REG_BRUSH_DATA5832R/W13'h1568X2D_REG_BRUSH_DATA5932R/W13'h156CX2D_REG_BRUSH_DATA6032R/W13'h1570X2D_REG_BRUSH_DATA6132R/W13'h1574X2D_REG_BRUSH_DATA6232R/W13'h1578X2D_REG_BRUSH_DATA6332R/W13'h157CX2D_REG_DP_BRUSH_FRGD_CLR32R/W13'h147CX2D_REG_DP_BRUSH_BKGD_CLR32R/W13'h1478X2D_REG_SRC_X32R/W13'h1414X2D_REG_SRC_Y32R/W13'h1418X2D_REG_DP_SRC_FRGD_CLR32R/W13'h15D8X2D_REG_DP_SRC_BKGD_CLR32R/W13'h15DCX2D_REG_DP_DATATYPE32R/W13'h15C4X2D_REG_DP_MIX32R/W13'h15C8X2D_REG_REG_DST_WIN_COOR32R/W13'h15CCX2D_REG_REG_SRC_WIN_COOR32R/W13'h15D0X2D_REG_REG_SRC_WIN_SIZE32R/W13'h15D4驗證實施方案模塊級驗證本節描述了LJ-1芯片內模塊的驗證。主要包括以下11個模塊的驗證:(1)命令處理器;(2)頂點染色器;(3)圖元裝配;(4)CPC模塊;(5)HCW模塊;(6)像素染色器模塊;(7)段操作模塊;(8)像素CACHE模塊;(9)存儲管理模塊;(10)DMAC模塊;(11)2D模塊。命令處理器模塊驗證原理命令處理器是M9中流水線的一部分,站在M9整體測試角度上,測試命令處理器,必須從M9頂層輸入OpenGL命令,這些命令在傳遞到命令處理器時,引發相應的功能,進而對命令處理器相應功能進行了測試。因此,命令處理器的驗證平臺參見M9的仿真驗證平臺。后面的各個模塊的驗證平臺和命令處理器的情況一致。驗證用例單個顯示列表驗證用例glCallList.cpp。驗證目標驗證CMD對單個顯示列表命令的處理操作是正確的,具體包括:(1)CAU對OpenGL中的顯示列表命令的解析;(2)CAU與預處理單元的數據交互測試;(3)CMD與MMU、3D引擎的數據交互測試。驗證方法驗證方法如下:使用glGenLists()產生一個索引(listName=glGenLists(1)),使用GLbooleanglIsList()來判斷該索引listName是否被使用(a=glIsList(listName)),如果想要調用顯示列表存儲的內容,需要執行命令glCallList(GLuintlist)。執在display函數中執行一次glCallList()。本次用例調用一次glCallList(),預計出現一幅三角形和返回一個布爾類型為一的值。(注:因為待測函數glCallList(GLuintlist)變量只有一個,故只有一個測試用例)。合格判據合格判據如下:OpenGL仿真結果CmodelMesaSV模型多個顯示列表驗證用例glCallLists_byte.cpp。glCallLists_unsigned_byte.cpp。驗證目標驗證CMD對多個顯示列表命令的處理操作是正確的,具體包括:(1)CAU對OpenGL中的顯示列表命令的解析;(2)CAU與預處理單元的數據交互測試;(3)CMD與MMU、3D引擎的數據交互測試。驗證方法驗證方法如下:定義26個字符;使用glGenLists()函數產生128個連續的索引,將該值賦給fontoffset,其中第一個索引就是顯示列表的基址;使用glNewList(),為每個字母創建一個顯示列表,每個顯示列表的索引就是基址與這個字母對應的ASCII值相加的結果,繪制26個字符的位圖,結束顯示列表;使用glNewList()創建空格的顯示列表,繪制空格,結束顯示列表。在display()函數中,設置光柵化位置為glRasterPos2i(20,60);向子函數printString()傳遞符串"THEQUICKBROWNFOXJUMPS"再將位置改為lRasterPos2i(20,40),傳遞字符串"OVERALAZYDOG",在子函數printString()中,將fontoffset設置為glListBase的偏移值,第一個測例調用glCallLists(strlen(s),GL_BYTE,(GLbyte*)s)函數繪圖,第二個測例調用glCallLists(strlen(s),GL_UNSIGNED_BYTE,(GLbyte*)s)函數繪圖。使用glGet函數獲取GL_MAX_LIST_NESTING,GL_LIST_INDEX和GL_LIST_MODE的值。本測試兩用例預計都會顯示符串"THEQUICKBROWNFOXJUMPS","OVERALAZYDOG"。(注:glCallLists(GLsizei,GLenumtype,constGLvoid*lists)中的type可以設置為GL_BYTE,GL_UNSIGNED_BYTE,GL_SHORT,GL_UNSIGNED_SHORT,GL_INT,GL_UNSIGNED_INT或GL_FLOAT;而要在屏幕上顯示的字母或是數字是ASCII碼,一個ASCII碼占一個字節,故本函數測試有兩個測試用例分來用來測試GL_BYTE和GL_UNSIGNED_BYTE。合格判據合格判據如下:OpenGL仿真結果CmodelMesaSV模型GL_BYTEGL_UNSIGNED_BYTE層次式顯示列表驗證用例qiantao.cpp。驗證目標驗證CMD對層次式顯示列表命令的處理操作是正確的,具體包括:(1)CAU對OpenGL中的顯示列表命令的解析;(2)CAU與預處理單元的數據交互測試;(3)CMD與MMU、3D引擎的數據交互測試。驗證方法驗證方法如下:glGenLists(GLsizeirange)分別定義四個顯示列表1,2,3,4,第一個顯示列表存放一個紅色的點,第二個顯示列表存放一個綠色的點,第三個顯示列表存放一個藍色的點,第四個顯示列表調用這三個顯示列表,用于繪制一個三角形。然后在display()函數中使用glCallList(GLuintlist)調用第四個顯示列表。本測試用例預計產生一個三角形和4個布爾類型為1的值。(注:因為待測函數glCallList(GLuintlist)變量只有一個,故只有一個測試用例)。合格判據合格判據如下:OpenGL仿真結果CmodelMesaSV模型自主命令的處理驗證用例見像素染色器繪制點,線,三角形測試用例。驗證目標驗證CMD對自主命令的處理操作是正確的,具體包括:(1)CAU對自主命令:可編程染色程序及硬件光標加載命令的解析;(2)CAU與預處理單元的數據交互測試;(3)CMD與DMA、3D引擎的數據交互測試。驗證方法驗證方法如下:根據命令處理器的設計方案,加載固定程序時,命令處理器需要同DMA交換數據。如果要用到頂點染色器或是像素染色器,則都是需要加載固定程序,所以畫點,線,三角形,光明或紋理功能都可以測試加載固定程序的處理過程。合格判據合格判據如下:見像素染色器繪制點,線,三角形測試的合格判據。其它渲染命令的處理驗證用例見3D引擎和2d引擎測試用例。驗證目標驗證CMD對前四類之外的其他OpenGL命令、2D引擎命令的處理是正確的,具體包括:(1)CAU對其他OpenGL命令、2D引擎命令的解析;(2)CAU與預處理單元的數據交互測試;(3)CMD與3D引擎、2D引擎的數據交互測試。驗證方法根據命令處理器的設計方案,除了緩沖區對象命令,顯示列表命令和自主命令外,對其它所以OpenGL命令,命令處理器都只完成命令拼接,而命令的具體處理分別由3D2引擎和2D引擎完成,所以對這些命令處理過程的驗證,可以通過3D2引擎和2D引擎的測試結果進行驗證。3D引擎處理的命令:(1)頂點染色器處理的命令:glColorglColorMaterialglDisableglEnableglLightglLightvglLightvglLightModelglLightModelvglLightModelvglLoadIdentityglLoadMatrixglLoadMatrixglLoadMatrixglLoadMatrixglMaterialglMaterialvglMaterialvglMatrixModeglMultMatrixglMultMatrixglMultMatrixglMultMatrixglNormal3glPopAttribglPopMatrixglPushAttribglPushMatrixglRasterPosglTexCoordglMultiTexCoordglMultiTexCoordglVertex(2)圖元裝配處理的命令:glBeginglEdgeFlagglEndglPolygonMode(3)CPC模塊處理的命令:glClipPlaneglInitNamesglLoadNameglPopNameglPushNameglRenderModeglSelectBufferglClipPlaneglFrustumglOrtho(4)HCW模塊處理的命令:glCullFaceglDepthRangeglFeedbackBufferglFrontFaceglPassThroughglViewport(5)像素染色器處理的命令:glHintglLineStippleglLineWidthglPointSizeglPolygonOffsetglPolygonStippleglBindTextureglBitmapglCopyPixelsglCopyTexImage1DglCopyTexImage2DglCopyTexSubImage1DglCopyTexSubImage2DglDrawPixelsglPixelMapvglPixelTransferglPixelZoomglReadPixelsglReadPixelsglTexImage1DglTexImage2DglTexSubImage1DglTexSubImage2DglTexEnvglTexParameterglTexParametervglActiveTexture(6)段操作模塊處理的命令:glAccumglAlphaFuncglBlendColorglBlendFuncglClearglClearAccumglClearColorglClearDepthglClearIndexglClearStencilglColorMaskglDepthFuncglDepthMaskglDrawBufferglIndexMaskglLogicOpglReadBufferglScissorglStencilFuncglStencilMaskglStencilopglBlendEquationglFinishglCreatRegionglResetRegionglAddRegionglAddRegionglDeletRegion(7)2D引擎處理的命令:x2dAddressx2dImagex2dSrcx2dZoomRopAlphax2dTransColorx2dMaskx2dClipx2dDrawLinex2dDrawRectx2dRectProx2dDrawPolygonx2dVerticex2dCreatePenx2dRop2x2dFontx2dFontProperty合格判據合格判據如下:判定3D頂點染色處理命令處理是否拼接正確,見頂點處染色理器模塊測試。判定3D圖元裝配處理命令是否拼接正確,見圖元裝配模塊測試。判定3D中CPC處理命令是否拼接正確,見CPC模塊測試。判定3D中HCW處理命令是否拼接正確,見HCW模塊測試。判定3D像素染色處理命令處理是否拼接正確,見像素染色處理器模塊測試。判定3D段操作處理命令處理是否拼接正確,見段操作模塊測試。判定2D引擎處理命令處理是否拼接正確,見2D模塊測試。頂點染色器模塊驗證原理參見M9的仿真驗證平臺。驗證用例頂點染色器幾何變換驗證用例測試頂點染色器的平移、旋轉、縮放、加載矩陣、加載單位矩陣和矩陣乘法等單一功能和復合功能的測試。測試用例參見:geometricTransform_translate.cpp。geometricTransform_scale.cpp。geometricTransform_rotate_positive.cpp。geometricTransform_rotate_negative.cpp。驗證目標驗證頂點染色器的平移、旋轉、縮放、加載矩陣、加載單位矩陣和乘法矩陣等單一功能和復合功能是否正確。驗證方法1)平移(1)使用平移、縮放和旋轉繪制一個三角形;(2)調用加載單位矩陣后,再繪制一個三角形;(3)再向上下左右前后八個方向平移,各自繪制一個三角形;(4)再調用加載單位矩陣、加載矩陣后,繪制一個三角形;(5)最后重復調用加載單位矩陣、乘法矩陣后,繪制一個三角形兩次,每次乘法矩陣的參數分別完成平移和縮放;2)縮放使用縮放命令將三角形分別對x軸、y軸和z軸的正向、負向分別進行縮小和放大。3)旋轉使用縮放命令將直線分別對x軸、y軸和z軸的正向、負向分別進行角度10度步進的旋轉。合格判據WindowsMESAFPGA模型頂點染色器模型視圖堆棧功能測試驗證用例測試用例參見:duizhan.cpp。驗證目標驗證模型視圖矩陣模式下,矩陣的入棧和出棧操作功能是否正確。驗證方法將模型視圖矩陣每次和一個乘法矩陣相乘(完成縮放功能),每次乘完的結果進行入棧,重復5次后,在每次彈出一個矩陣后,平移一下,繪制一個三角形,直到最后一個矩陣彈出為止。合格判據WindowsMESAFPGA模型頂點染色器法向量標準化驗證用例法向量標準化有兩種模式GL_RESCALE_NORMAL和GL_NORMALIZE。由于Windows不支持GL_RESCALE_NORMAL,這里只測試GL_NORMALIZE模式下的法向量標準化。驗證用例為:glNormalize.cpp驗證目標驗證在使能GL_NORMALIZE情況下,法向量是否能夠標準化正確。驗證方法再使能光照的情況下,先使能GL_NORMALIZE,采用平移后,繪制一個三角形。在不使能GL_NORMALIZE,加載一個矩陣后,再繪制一個三角形。合格判據WindowsMESAFPGA模型頂點染色器平行光源光照計算驗證用例見例子light.cpp和cailiao.cpp驗證目標驗證頂點染色中開啟不同盞燈的效果。驗證方法(a)繪制一個三角形,啟用光照,分別是紅、綠、紫、藍、黃、白、青、灰色,其中綠色燈為聚光燈,其它為方向性光源,之后關閉光照,觀察結果。(b)開啟第0和第1盞燈,之后關閉,觀察結果。(c)開啟第2、3、4盞燈,之后關閉,觀察結果。(d)開啟第1、3、4、5盞燈,之后關閉,觀察結果。(e)開啟第0、1、4、6、7盞燈,之后關閉,觀察結果。(f)開啟第0、1、2、3、4、5盞燈,之后關閉,觀察結果。(g)開啟第1、2、3、4、5、6、7盞燈,之后關閉,觀察結果。(h)開啟第0、1、2、3、4、5、6、7盞燈,之后關閉,觀察結果。(i)開啟光照材料模式,分別使用參數GL_AMBIENT,GL_DIFFUSE,GL_SPECULAR,GL_AMBIENT_AND_DIFFUSE觀察結果。合格判據編號windowsMESAFPGA模型a-0a-1a-2a-3a-4a-5a-6a-7bcdefghi-1i-2i-3i-4頂點染色器聚光燈光照計算驗證用例見例子juguangdeng.cpp和cailiaomoshi.cpp驗證目標驗證頂點染色中開啟不同盞燈的效果。驗證方法(a)繪制一個三角形,啟用光照,分別是紅、綠、紫、藍、黃、白、青、灰色,之后關閉光照,觀察結果。(b)開啟第0和第1盞燈,之后關閉,觀察結果。(c)開啟第2、3、4盞燈,之后關閉,觀察結果。(d)開啟第1、3、4、5盞燈,之后關閉,觀察結果。(e)開啟第0、1、4、6、7盞燈,之后關閉,觀察結果。(f)開啟第0、1、2、3、4、5盞燈,之后關閉,觀察結果。(g)開啟第1、2、3、4、5、6、7盞燈,之后關閉,觀察結果。(h)開啟第0、1、2、3、4、5、6、7盞燈,之后關閉,觀察結果。(i)開啟光照材料模式,分別使用參數GL_AMBIENT,GL_DIFFUSE,GL_SPECULAR,GL_AMBIENT_AND_DIFFUSE觀察結果。合格判據編號windowsMESAFPGA模型a-0a-1a-2a-3a-4a-5a-6a-7bcdefghi-1i-2i-3i-4光柵位置測試驗證用例驗證用例參見:glrasterpos.cpp。驗證目標驗證光柵位置的幾何變換功能是否正確。驗證方法(1)先設定一個光柵位置坐標,再使用glBitmap繪制一幅圖像;(2)在設定一個平移參數,用相同的光柵位置坐標,再使用glBitmap繪制一幅圖像;合格判據WindowsMESAFPGA模型頂點染色器紋理坐標變換測試驗證用例驗證用例參見:wenli.cpp驗證目標驗證頂點染色器對紋理坐標變換的測試。驗證方法(1)設置紋理相關參數,并使能2d紋理;(2)繪制一個矩形,并帶有紋理坐標;(3)將矩形平移,設置矩陣模式為紋理矩陣,并設置平移、旋轉和縮放參數;(4)繪制一個矩形,并帶有紋理坐標,該矩形的坐標和紋理坐標同第(2)步相同。合格判據WindowsMESAFPGA模型頂點染色器紋理堆棧測試驗證用例驗證用例參見:texture_stack.cpp。驗證目標驗證紋理矩陣堆棧功能是否正確。驗證方法(1)設置紋理相關參數,并使能2d紋理;(2)繪制一個矩形,并帶有紋理坐標;(3)將矩形平移,設置矩陣模式為紋理矩陣,并設置平移和縮放參數,將紋理矩陣入棧;(4)設置旋轉參數;(5)繪制一個矩形,并帶有紋理坐標,該矩形的坐標和紋理坐標同第(2)步相同;(6)將紋理矩陣出棧,并設置矩陣模式為模型視圖矩陣,再設置平移參數;(7)繪制一個矩形,并帶有紋理坐標,該矩形的坐標和紋理坐標同第(2)步相同。合格判據WindowsMESAFPGA模型圖元裝配模塊驗證原理參見M9的仿真驗證平臺。驗證用例點的測試驗證用例驗證用例為:(1)point.cpp(2)point_size.cpp(3)point_error.cpp驗證目標(1)在glbegin()和glend()之間傳入GL_POINT能否畫點。(2)用glpointsize()能否設置點的大小,啟用反走樣和不啟用反走樣觀察點的樣式。(3)邊界和錯誤類型測試。驗證方法驗證方法如下:(1)在glBegin()和glEnd()之間畫點。(2)分別給出兩行點,第一行啟用反走樣,第二行不啟用反走樣,且點的大小從左至右分別為默認值1.0,8.0,16.0,24.0,且分別給定的顏色為藍綠紅黃,進行繪制,并且測試glPointSize()的get的返回值。(3)繪制兩個點,一個點的值取為-1.0,另一個點glPointSize作用在glBegin和glEnd()之間。合格判據合格判據如下:WindowsMESAFPGA模型直線的測試驗證用例(1)line.cpp(2)line_width.cpp(3)line_error.cpp(4)line_odd.cpp驗證目標(1)在glbegin()和glend()之間傳入參數GL_LINE畫直線。(2)啟用反走樣和不啟用反走樣繪制兩組直線,觀察樣式是否相同,并且用glline_width能否設置線的寬度。(3)linewidth()錯誤類型測試。(4)奇數點繪制直線。驗證方法驗證方法如下:(1)給出四個點,將一組點的顏色設為黃色,一組設為粉色,將直線的寬度設為默認值1.0來進行繪制。(2)給出8種類型的直線,右側一組啟用反走樣,左側一組不啟用,將直線的顏色分別設置為不同的值,將直線的寬度設為不同類型的值來進行繪制,并且測試gllinewidth()的get的返回值。(3)給出3條直線,兩條直線的值取3.0,-1.0,另一條直線的gllinewidth作用在glBegin()和glEnd()之間。(4)給出三個點,觀察能否繪制直線,第三個點是否起作用。合格判據合格判據如下:WindowsMESAFPGA模型折線的測試驗證用例(1)line_strip.cpp(2)line_strip_error.cpp驗證目標(1)在glbegin()和glend()之間傳入參數GL_LINE_STEIP繪制連續漸變的不閉合的折線。(2)在glbegin()和glend()之間傳入參數GL_LINE_STEIP,給定一個頂點能否繪制折線。驗證方法驗證方法如下:(1)繪制六個點,分別取不同顏色,分別命名為v0,v1,v2….,從v0到v1繪制一條直線,然后從v1到v2繪制一條直線,依次類推,最后畫v5到v6的直線。(2)繪制一個點,取黃色,觀察能否繪制折線。合格判據合格判據如下:WindowsMESAFPGA模型環線功能測試驗證用例驗證用例(1)line_loop.cpp(2)line_loop_error.cpp驗證目標(1)在glbegin()和glend()之間傳入參數GL_LINE_LOOP能否繪制連續漸變的閉合的環線。(2)在glbegin()和glend()之間傳入參數GL_LINE_LOOP,少于三個點能否繪制環線。驗證方法驗證方法如下:(1)繪制九個點,分別取不同顏色,分別命名為v0,v1,v2….,從v0到v1繪制一條直線,然后從v1到v2繪制一條直線,依次類推,最后畫v8到v9的直線(2)繪制兩個點,分別取不同顏色,繪制環線。合格判據合格判據如下:WindowsMESAFPGA模型三角形的測試驗證用例(1)triangles-2.cpp(2)triangles-1.cpp驗證目標(1)在glbegin()和glend()之間傳入參數GL_TRIANGLES,能否繪制三角形。(2)在glbegin()和glend()之間傳入參數GL_TRIANGLES,頂點數不是三的倍數能否繪制三角形。驗證方法驗證方法如下:(1)在glBegin中傳入參數GL_TRIANGLES,指定6個頂點,分別為紅綠藍,進行繪制。(2)在glBegin中傳入參數GL_TRIANGLES,指定四個頂點,分別為紅綠藍,進行繪制。用前三個頂點繪制一個三角形,與1不同的是第四個點被忽略。合格判據合格判據如下:WindowsMESAFPGA模型三角形帶的測試驗證用例(1)triangles_strip.cpp(2)triangles1_strip.cpp驗證目標(1)在glBegin中傳入參數GL_TRIANGLES_STRIP,能否繪制三角形帶。(2)在glBegin中傳入參數GL_TRIANGLES_STRIP,與1的頂點順序不同。驗證方法驗證方法如下:(1)在glBegin中傳入參數GL_TRIANGLES_STRIP,指定五個頂點,分別取不同顏色進行繪制三角形,第一個三角形使用頂點v0,v1,v2,第二個使用頂點v2,v1,v3,依次類推。(2)在glBegin中傳入參數GL_TRIANGLES_STRIP,指定五個頂點,分別取不同顏色進行繪制,與1不同的是給定的第1和5頂點順序交換。合格判據合格判據如下:WindowsMESAFPGA模型三角形扇的測試驗證用例(1)triangles_fan.cpp(2)triangles1_fan.cpp驗證目標(1)在glBegin中傳入參數GL_TRIANGLES_FAN,能否繪制三角形扇。(2)在glBegin中傳入參數GL_TRIANGLES_FAN,與1的頂點順序不同。驗證方法驗證方法如下:(1)在glBegin中傳入參數GL_TRIANGLES_FAN,指定6頂點,分別取不同顏色進行繪制。與三角形帶的測試相識,只是頂點的順序現在是v0,v1,v2,接著是v0,v2,v3,依次類推。(2)在glBegin中傳入參數GL_TRIANGLES_FAN,指定6個頂點,分別取不同顏色進行繪制,與1不同的是把第一個和第4個頂點的順序互換。合格判據合格判據如下:WindowsMESAFPGA模型四邊形的測試驗證用例(1)Quads.cpp(2)quads-1.cpp驗證目標(1)在glbegin()和glend()之間傳入參數GL_QUADS,能否繪制四邊形。(2)在glbegin()和glend()之間傳入參數GL_QUADS,頂點數不是4的倍數能否繪制四邊。驗證方法驗證方法如下:(1)在glBegin中傳入參數GL_QUADS,指定8個頂點,分別為不同顏色,進行繪制兩個四邊形,每四個頂點繪制一個四邊形。(2)在glBegin中傳入參數GL_QUADS,指定六個頂點,分別取不同顏色進行繪制,與1不同的是第五和六個點被忽略。合格判據合格判據如下:WindowsMESAFPGA模型四邊形帶的測試驗證用例(1)quads-strip.cpp(2)quads-strip1.cpp(3)quads-error.cpp驗證目標(1)在glBegin中傳入參數GL_QUADS_STRIP,頂點順序的選擇是否影響繪圖結果(2)在glBegin中傳入參數GL_QUADS_STRIP,與1的頂點順序不同。(3)在glBegin中傳入參數GL_QUADS_STRIP,給定三個頂點觀察能否繪制四邊形。驗證方法驗證方法如下:(1)在glBegin中傳入參數GL_QUADS_STRIP,指定八個頂點,分別取不同顏色進行繪制一系列四邊形,首先使用頂點v0,v1,v3,v2,然后是v2,v3,v5,v4,然后是v4,v5,v7,v6,依次類推。(2)在glBegin中傳入參數GL_QUADS_STRIP,指定8個頂點,分別取不同顏色進行繪制,與1不同的是v4,v5與v6,v7頂點交換。(3)錯誤類型:在glBegin中傳入參數GL_QUADS_STRIP,指定3個頂點,分別取不同顏色進行繪制四邊形。合格判據合格判據如下:WindowsMESAFPGA模型多邊形的測試驗證用例(1)Polygon-1.cpp(2)Polygon-2.cpp(3)polygon-3.cpp驗證目標(1)在glBegin中傳入參數GL_POLYGON,繪制多邊形。(2)在glBegin中傳入參數GL_POLYGON,與1的頂點順序不同。(3)在glBegin中傳入參數GL_POLYGON,給定兩個頂點觀察能否繪制多邊形。驗證方法驗證方法如下:(1)在glBegin中傳入參數GL_POLYGON,指定5個頂點,5個頂點的顏色取黃色進行繪制多邊形。(2)如果所指定的多邊形本身必須不得相交并且必須是凸多邊形,繪制多邊形,與1不同的是將v3頂點的坐標?。?,0),變成凹變形,觀察結果不可預測。(3)在glBegin中傳入參數GL_POLYGON,指定2個頂點,分別取不同顏色進行繪制多邊形。合格判據合格判據如下:WindowsMESAFPGA模型繪制模式的測試驗證用例(1)PolygonMode_back_point.cpp(2)PolygonMode_front_point.cpp(3)PolygonMode_front_back_point.cpp(4)PolygonMode_back_line.cpp(5)PolygonMode_front_line.cpp(6)PolygonMode_front_back_line.cpp(7)PolygonMode_back_fill.cpp(8)PolygonMode_front_fill.cpp(9)PolygonMode_front_back_fill.cpp(10)PolygonMode-Fill10.cpp(11)PolygonMode-Fill11.cpp驗證目標用函數glPolygonMode(GLenumface,GLenummode)控制一個多邊形正面和背面的繪圖模式,face可以是GL_FRONT,GL_BACK,GL_FRONT_AND_BACK,mode參數可以是GL_POINT,GL_LINE,GL_FILL。表示多邊形應該被畫成點、輪廓還是填充模式。驗證方法驗證方法如下:(1)繪制一個金字塔,設置多邊形正面的繪制模式為點模式,將頂點順序為順時針的方向設置為正面,啟用剔除功能,將背面剔除。觀察結果即出現金字塔型的孤立點。(2)繪制一個金字塔,設置多邊形反面的繪制模式為點模式,將頂點順序為順時針的方向設置為正面,啟用剔除功能,將正面剔除。(3)繪制一個金字塔,設置多邊形正反面的繪制模式為點模式,將頂點順序為順時針的方向設置為正面,禁用剔除功能。(4)繪制一個金字塔,設置多邊形正面的繪制模式為線框模式,將頂點順序為順時針的方向設置為正面,啟用剔除功能,將背面剔除,觀察結果。(5)繪制一個金字塔,設置多邊形反面的繪制模式為線框模式,將頂點順序為順時針的方向設置為正面,啟用剔除功能,將正面剔除,觀察結果。(6)繪制一個金字塔,設置多邊形正反面的繪制模式為線框模式,將頂點順序為順時針的方向設置為正面,禁用剔除功能。觀察結果。(7)繪制一個金字塔,設置多邊形正面的繪制模式為填充模式,將頂點順序為順時針的方向設置為正面,啟用剔除功能,將背面剔除,觀察結果。(8)繪制一個金字塔,設置多邊形反面的繪制模式為填充模式,將頂點順序為順時針的方向設置為正面,啟用剔除功能,將正面剔除,觀察結果。(9)繪制一個金字塔,設置多邊形正反面的繪制模式為填充模式,將頂點順序為順時針的方向設置為正面,禁用剔除功能,觀察結果。(10)繪制一個金字塔,設置多邊形正面的繪制模式為填充模式,反面的繪制模式為線框模式,將頂點順序為順時針的方向設置為正面,觀察結果。(11)繪制一個金字塔,設置多邊形反面的繪制模式為填充模式,正面的繪制模式為線框模式,將頂點順序為順時針的方向設置為正面,觀察結果。合格判據合格判據如下:WindowsMESAFPGA模型正面點模式反面點模式正反面為點模式正面為線框模式反面為線框模式正反面為線框模式正面為填充模式反面為填充模式正反面為填充模式正面為填充模式,反面為線框模式正面線框模式,反面填充模式邊界邊的測試驗證用例(1)edgeflag-1.cpp。(2)edgeflag-2.cpp。(3)edgeflag-3.cpp。(4)edgepointer-4.cpp。(5)edgepointer-5.cpp。(6)edgepointer-6.cpp。(7)edgeflag-7.cpp。(8)edgeflag-8.cpp。驗證目標用函數glEdgeFlag(GLbooleanflag)表示一個頂點是否應該被認為是多邊形的一條邊界邊的起點,如果flag是GL_TRUE,邊界志就設置為TRUE,在此之后創建的所有頂點都認為是邊界邊的起點,直到用GL_FLASE再次調用這個函數。驗證方法驗證方法如下:(1)將多邊形的正反面設置為輪廓模式GL_LINE,給出三個點,將第二個點的邊界邊標志設為FLASE,繪制該多邊形。預期結果即出現兩條直線,其實是不閉合的三角形(2)將多邊形的正反面設置為輪廓模式GL_POINT,給出三個點,將第二個點的邊界邊標志設為FLASE,繪制該多邊形。預期結果即出現繪制兩個點。(3)將多邊形的正反面設置為輪廓模式GL_FILL,給出三個點,將第二個點的邊界邊標志設為FLASE,繪制一個三角形。(4)將數組flag設置為{1,0,1},glEdgeFlagPointer中*pointer指向該數組,以GL_LINE模式繪制該多邊形,觀察結果與1相同。(5)將數組flag設置為{1,0,1},glEdgeFlagPointer中*pointer指向該數組,以GL_POINT模式繪制該多邊形,觀察結果與2相同。(6)將數組flag設置為{1,0,1},glEdgeFlagPointer中*pointer指向該數組,以GL_FILL模式繪制該多邊形,觀察結果與3相同。(7)將多邊形的正反面設置為輪廓模式GL_LINE,繪制一個非凸八邊形,先將該多邊形分解為一個一個的三角形進行繪制,觀察結果,出現有一個個三角形組成的非凸多邊形,有內部輪廓線。(8)將多邊形的正反面設置為輪廓模式GL_LINE,繪制一個非凸八邊形,先將該多邊形分解為一個一個的三角形進行繪制,為每個頂點設置邊界邊標志,設置邊界邊標志后,看到的是一個非凸多邊形的真正輪廓。合格判據合格判據如下:WindowsMESAFPGA模型正反面輪廓模式線模式正反面輪廓模式點模式正反面輪廓填充模式正反面輪廓線模式正反面輪廓點模式正反面輪廓填充模式正反面線模式沒有標記多邊形邊界正反面線模式標記多邊形的邊界點畫線的測試驗證用例(1)linestipple-1.cpp。(2)linestipple-2.cpp。驗證目標繪制點畫線,分別觀察在不同的點畫模式和直線寬度下繪制的結果。驗證方法驗證方法如下:(1)使用glEnable()函數啟用直線的點畫功能,在第一行繪制三條不同模式的點畫線,重復因子為1,第一條的pattern為0x0101,第二條的pattern為0xFF,第三條的pattern為0x1C47,在第二行也繪制三條相同模式的點畫線,只是將線寬設為5.0,在第三行,將點畫模式設為1,0x1C47將6條線繪制成linestrip形式的,第四行將點畫模式還設為1,0x1C47繪制6lines形式的,第五行,將重復因子設為5,pattern也為0x1C47,繪制一條線。(2)使用glEnable()函數啟用直線的點畫功能,繪制一個四面體:重復因子為1,參數pattern為0xff00。一個六面體:重復因子為1,參數pattern為0xff00。一個八面體:重復因子為1,參數pattern為0xff00。合格判據合格判據如下:WindowsMESAFPGA模型點畫多邊形的測試驗證用例點畫多邊形line_stipple.cpp驗證目標用點畫多邊形模式來繪制多邊。驗證方法驗證方法如下:用點畫多邊形模式來繪制多邊形,定義32*32蒼蠅的位圖,在init()函數中啟用多邊形的點畫功能,用蒼蠅位圖定義填充多邊形的當前點畫模式display()函數中繪制八邊形。合格判據合格判據如下:WindowsMESAFPGA模型CPC模塊驗證原理參見M9的仿真驗證平臺。驗證用例平面點裁剪功能測試驗證用例(1)啟用一個剪裁平面:clip1_Points.cpp(2)啟用兩個剪裁平面:clip2_Points.cpp(3)啟用三個剪裁平面:clip3_Points.cpp(4)啟用四個剪裁平面:clip4_Points.cpp(5)啟用五個剪裁平面:clip5_Points.cpp(6)啟用六個剪裁平面:clip6_Points.cpp驗證目標主要驗證在有一個裁剪平面、兩個剪裁平面、三個剪裁平面、四個剪裁平面、五個剪裁平面、六個剪裁平面時,點在有的平面內、點在有的平面外和在有的平面上三種情況下的功能是否正確。驗證方法驗證方法如下:畫出x軸,y軸,z軸,(1)定剪裁平面xoz;在坐標中的不同位置畫出四個點,分別是點在平面內、外和在平面上,通過一個平面xoz的裁剪之后,只能看到如圖(1)所示的三個點;(2)定剪裁平面xoz和yoz;在坐標中的不同位置畫出五個點,分別是點在2個面內、點在2個面外,點在1個平面內,在另一個平面外(兩個)和點在一個平面內,在另一個平面上,啟用剪裁平面xoz和yoz之后,只能看到如圖(2)所示的兩個點(3)定裁剪平面為xoz、yoz和x+y-3=0;在坐標中的不同位置畫出五個點,分別是點在3個面內、點在xoz和yoz平面之內,但在另外一個平面x+y-3=0之外、點在xoz平面之外,在另外兩個平面之內、點在x+y-3=0平面之內,在另外兩個平面之外、點在xoz平面上,啟用三個剪裁平面之后,只有在三個平面之內的點和在xoz平面上的點被保留下來,如圖(3)所示;(4)定裁剪平面為xoz、yoz、x+y-3=0和y-2.0=0;在坐標中的不同位置畫出六個點,分別是點在4個面內、點在x+y-3=0和y-2.0=0的交線上、點在yoz平面之外、點在yoz和xoz平面之外、點在x+y-3=0平面之外,啟用四個剪裁平面之后,只有在四個平面之內的點和在x+y-3=0和y-2.0=0的交線上的點被保留下來,如圖(4)所示;(5)定裁剪平面為xoz、yoz、x+y-3=0、x-2.0=0和y-2.0=0;在坐標中的不同位置畫出六個點,分別是點在5個面內、點在x+y-3=0和x-2.0=0的交線上、點在xoz和yoz平面之內、點在yoz和xoz平面之外、點在xoz平面之外、點在y-2.0=0平面上,啟用五個剪裁平面之后,只有在五個平面之內的點和在x+y-3=0和x-2.0=0的交線上的點以及y-2.0=0平面上的點被保留下來,如圖(5)所示;(6)定剪裁平面為xoz、yoz、x+y-3=0、x-2.0=0、y-2.0=0和x+-0.5=0;在坐標中的不同位置畫出8個店,分別是點在6個平面內、點在x+y-3和x-2.0=0的交線上、點在xoz平面與yoz平面之內、點在yoz和xoz平面之外、點在xoz平面之外、點在y-2.0=0平面上、點在yoz平面與x+y-0.5=0平面的交線上、點在xoz平面與x+y-0.5=0平面的交線上;啟用六個剪裁平面之后,只有6個平面之內的點和在x+y-3和x-2.0=0的交線上的點、在y-2.0=0平面上的點、在xoz平面和x+y-0.5=0平面的交線上的點、在yoz平面和x+y-0.5=0平面上的點被保留下來,如圖(6)所示;合格判據合格判據如下:WindowsMESA模型FPGA(1)(2)(3)(4)(5)(6)平面線裁剪功能測試驗證用例(1)啟用一個剪裁平面:clip1_Lines.cpp。(2)啟用兩個剪裁平面:clip2_Lines.cpp。(3)啟用三個剪裁平面:clip3_Lines.cpp。(4)啟用四個剪裁平面:clip4_Lines1.cpp;clip4_Lines2.cpp。(5)啟用五個剪裁平面:clip5_Lines1.cpp;clip5_Lines2.cpp;clip5_Lines3.cpp。(6)啟用六個剪裁平面:clip6_Lines1.cpp;clip6_Lines2.cpp;clip6_Lines3.cpp。驗證目標主要驗證在有一個裁剪平面、兩個剪裁平面、三個剪裁平面、四個剪裁平面、五個剪裁平面、六個剪裁平面時,線在有的平面內、線在有的平面外、線在有的平面上、線在所有剪裁平面內幾種情況下的功能是否正確。驗證方法驗證方法如下:畫出x軸,y軸,z軸(1)定剪裁平面xoz;在坐標中畫出三條直線,分別是在平面內、在平面外和與平面有交點三種,通過一個平面xoz的裁剪之后,只能看到圖示直線,處于裁剪平面外的部分都被裁掉了,如圖(1)所示;(2)定剪裁平面xoz、yoz;在坐標中的不同位置畫出四條直線,分別是線在兩個平面外,線在兩個平面內,線與一個平面有交點,與另一個平面無交點(兩條),啟用剪裁平面xoz和yoz之后,平面外的部分都被裁掉,只能看到如圖(2)所示的部分直線;(3)定裁剪平面為xoz、yoz和x+y-2.5=0;在坐標中的不同位置畫出四條直線,分別是線在3個面內、線在xoz平面內但與yoz和x+y-2.5=0平面有交點、線與yoz平面有交點,但在xoz平面外在x+y-2.5=0內,啟用三個剪裁平面之后,只有在三個平面之內的線和與yoz和x+y-2.5=0平面有交點的線在平面內的部分和交點被保留下來,如圖(3)所示;(4)定裁剪平面為xoz、yoz、x+y-3=0和y-2.0=0;直線在四個平面交集之內和在交集之外,當啟用剪裁平面之后,在平面之外的直線被裁掉,只剩下平面之內的直線,如(4)上圖所示;直線分別被yoz和y-2.0=0平面所裁、直線被xoz和x+y-3=0平面所裁,最后只有裁剪平面之內的部分和交點被保留下來,如(4)下圖所示;(5)定裁剪平面為xoz、yoz、x+y-3=0、x-2.0=0和y-2.0=0;直線在五個平面的交集之內和在交集之外的情況,當經過剪裁之后,平面交集之外的直線被裁掉,只能看到平面之內的直線,如圖(5)上圖所示;直線與平面y-2.0=0有一個交點,剪裁之后平面y-2.0=0之外的部分都被裁掉,只剩下平面內的部分以及交點,如圖(5)中圖所示;直線與兩個平面都有交點,分別是直線與yoz和x+y-3=0有交點,直線與xoz和yoz有交點,啟用裁剪平面之后,只有平面之內的部分和交點被保留下來,如圖(5)下圖所示;(6)定剪裁平面為xoz、yoz、x+y-3=0、x-2.0=0、y-2.0=0和x+-0.5=0;直線在六個平面的交集之內和在交集之外的情況,當經過剪裁之后,平面交集之外的直線被裁掉,只能看到平面交集之內的直線,如圖(6)上圖所示;直線與平面x+y-3=0有一個交點,剪裁之后平面x+y-3=0之外的部分都被裁掉,只剩下平面內的部分以及交點,如圖(6)中圖所示;直線與兩個平面都有交點,分別是直線與x+y-3=0和x+y-0.5=0有交點,直線與xoz平面和yoz平面有交點,啟用剪裁平面之后,只有平面之內的部分和交點被保留下來,如圖(6)下圖所示;合格判據合格判據如下:WindowsMESA模型FPGA(1)(2)(3)(4)(5)(6)平面三角形裁剪功能測試驗證用例(1)啟用一個剪裁平面:三角形在平面內和三角形在平面外:clip1_Triangles1.cpp三角形一個點在平面外,兩個點在平面外:clip1_Triangles2.cpp三角形的兩個點在平面外,一個點在平面內:clip1_Triangles3.cpp(2)啟用兩個剪裁平面:三角形在兩個平面xoz和yoz內和在兩個平面外:clip2_Triangles1.cpp三角形被兩個裁剪平面xoz和yoz各裁去一個角,形成五個點的情況:clip2_Triangles2.cpp當兩個裁剪平面為xoz和y-1.0=0時:clip2_Triangles3.cpp(3)啟用三個剪裁平面:三角形在三個平面內和三角形在三個平面外:clip3_Triangles1.cpp三角形被三個面裁最多六個點的情況:clip3_Triangles2.cpp當兩個裁剪平面平行時:clip3_Triangles3.cpp(4)啟用四個剪裁平面:三角形在四個裁剪平面之內和在四個裁剪平面的交集之外:clip4_Triangles1.cpp三角形被裁剪平面裁成最多七個點的情況:clip4_Triangles2.cpp(5)啟用五個剪裁平面:三角形在五個平面交集內和交集外:clip5_Triangles1.cpp三角形被裁成八個點:clip5_Triangles2.cpp驗證目標(1)主要驗證在只有一個裁剪平面時,三角形在平面內,三角形在平面外,三角形被裁剪成3個點和4個點的情況下的功能是否正確。(2)主要驗證在有兩個裁剪平面時,三角形在兩個平面外,三角形在兩個平面內,三角形被裁剪成最多5個點的情況下的功能是否正確。(3)主要驗證在有三個裁剪平面時,三角形在3個平面外,三角形在3個平面內,三角形被裁剪成最多6個點的情況下的功能是否正確。(4)主要驗證在有四個裁剪平面時,分為三角形在4個平面外,三角形在4個平面內,三角形被裁剪成最多7個點的情況下的功能是否正確。(5)主要驗證在有五個裁剪平面時,三角形在5個平面外,三角形在5個平面內,三角形被裁剪成最多8個點的情況下的功能是否正確。驗證方法驗證方法如下:畫出x軸,y軸,z軸(1)定剪裁平面為xoz兩個三角形一個在裁剪平面xoz外,一個在平面內。所以當經過裁剪之后,平面外的三角形被完全裁掉,只剩下平面內的三角形被保留下來,如圖(1)上圖所示;三角形的一個點在平面外,兩個點在平面內,經過xoz平面裁剪之后,三角形被裁成四個點的情況,如圖(1)中圖所示;三角形一個點在平面內,兩個點在平面外,經過裁剪后只留下了平面內的小三角形部分,如圖(1)下圖所示;(2)定剪裁平面定為xoz和yoz;一個三角形整個處于兩裁剪平面之外,另一個三角形處于兩個裁剪平面之內,經過剪裁之后,裁剪平面之外的三角形被完全裁掉,裁剪平面之內的三角形被保留下來,如圖(2)上圖所示;三角形一個點處于xoz平面之外,另一個點處于yoz平面之外,第三個點處于兩個平面之內,經過剪裁之后,三角形被裁成五個點的情況,如圖(2)中圖所示;是當兩個裁剪平面平行時,三角形被截掉一個角成為四個點的情況,如圖(2)下圖所示;(3)定裁剪平面為xoz、yoz和x+y-2.5=0;三角形在三個裁剪平面內和在三個裁剪平面外的情況,當啟用剪裁平面之后,處于裁剪平面之外的那個三角形被裁掉,只剩下在裁剪平面之內的三角形顯示出來,如圖(3)下圖所示;三角形的三個角分別被三個剪裁平面所裁,只剩下在平面之內的部分,三角形被截為有六個點的情況,如圖(3)中圖所示;將裁剪平面定為xoz、yoz、和x-2.0=0,即有兩個面是平行的情況,剪裁之后只有平面內的部分被保留下來,如圖(3)下圖所示;(4)定裁剪平面為xoz、yoz、x+y-3=0和y-2.0=0;三角形在四個平面交集之內和在交集之外,當啟用剪裁平面之后,在平面之外的三角形被裁掉,只剩下平面之內的三角形,如圖(4)下圖所示;三角形分別被xoz、yoz、y-2.0=0和x+y-3=0平面所裁,最后只有裁剪平面之內的部分被保留下來,如圖(4)下圖所示;(5)定裁剪平面為xoz、yoz、x+y-3=0、x-2.0=0和y-2.0=0;三角形在五個平面的交集之內和在交集之外的情況,當經過剪裁之后,平面交集之外的三角形被裁掉,只能看到平面之內的三角形,如圖(5)上圖所示;三角形被平面xoz、yoz、x+y-3=0、x-2.0=0和y-2.0=0所裁,三角形被裁為八個點的情況,如圖(5)下圖所示;合格判據合格判據如下:WindowsMESA模型FPGA(1)(2)(3)(4)(5)(6)點的3D裁剪的測試驗證用例(1)透視投影:frustum_Points.cpp(2)平行投影:ortho_Points.cpp驗證目標主要驗證點分別在平截頭體視景體、立方體視景體的遠側面外、遠側面上、視景體內部、近側面上、近側面外的功能是否正確。驗證方法驗

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論