1
我想學習使用使用OpenGL的圖形庫。我可以繪製2D圖元(文本和線條),但3D三角形不會渲染。我試過所有我能想到的東西,但作爲一個OpenGL新手,我可能錯過了一些明顯的東西。
此代碼不打算高效。我試圖讓它首先工作。
這裏是設置在啓動時:
// 800 by 600 windows 32 bit depth
Driver->setDisplay(UDriver::CMode(ScreenWidth, ScreenHeight, 32));
NL3D::CViewport viewport;
viewport.initFullScreen();
Driver->setViewport(viewport);
NLMISC::CMatrix mtx;
mtx.identity();
Driver->setViewMatrix(mtx);
Driver->setModelMatrix(mtx);
// screen size is same as pixel resolution
// CFrustum(float left, float right, float bottom, float top, float znear, float zfar, bool perspective= true)
Driver->setMatrixMode2D(CFrustum(0.0f, ScreenWidth, 0.0f, ScreenHeight, -2.0f, 10000.0f, false));
下面是我的渲染循環代碼:
static NL3D::CMaterial mat;
mat.initUnlit();
mat.setColor(CRGBA(255, 255, 0, 128));
float x = 200.0f;
float y = 200.0f;
float width = 200.0f; // (float)ScreenWidth * 0.125f;
float height = 200.0f; // (float)ScreenHeight * 0.125f;
static NL3D::CVertexBuffer vb;
if (vb.getName().empty())
vb.setName("drawBitmap");
vb.setVertexFormat(NL3D::CVertexBuffer::PositionFlag | NL3D::CVertexBuffer::TexCoord0Flag);
vb.setNumVertices(4);
{
NL3D::CVertexBufferReadWrite vba;
vb.lock(vba);
vba.setVertexCoord(0, NLMISC::CVector(x, 0, y));
vba.setVertexCoord(1, NLMISC::CVector(x + width, 0, y));
vba.setVertexCoord(2, NLMISC::CVector(x + width, 0, y + height));
vba.setVertexCoord(3, NLMISC::CVector(x, 0, y + height));
vba.setTexCoord(0, 0, 0.f, 1.f);
vba.setTexCoord(1, 0, 1.f, 1.f);
vba.setTexCoord(2, 0, 1.f, 0.f);
vba.setTexCoord(3, 0, 0.f, 0.f);
}
dynamic_cast<NL3D::CDriverUser*>(Driver)->getDriver()->activeVertexBuffer(vb);
static NL3D::CIndexBuffer pb;
if (pb.getName().empty())
pb.setName("drawBitmap");
pb.setFormat(NL_DEFAULT_INDEX_BUFFER_FORMAT);
pb.setNumIndexes(6);
{
CIndexBufferReadWrite iba;
pb.lock(iba);
iba.setTri(0, 0, 1, 2);
iba.setTri(3, 2, 3, 0);
}
dynamic_cast<NL3D::CDriverUser*>(Driver)->getDriver()->activeIndexBuffer(pb);
dynamic_cast<NL3D::CDriverUser*>(Driver)->getDriver()->renderTriangles(mat, 0, 2);
有什麼建議?
謝謝
「我試圖學會使用一個使用OpenGL的圖形庫」 - 也許你應該問一個特定的庫,而不是一般的OpenGL?適當的標籤會爲您的問題提供更合適的編碼器。 – Cogwheel 2010-06-24 22:39:25
我懷疑任何人都熟悉它。它是Ryzome NeL遊戲引擎的一部分。我會試試看。謝謝 – Jay 2010-06-24 22:43:48