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