游戏开发论坛

 找回密码
 立即注册
搜索
查看: 5719|回复: 5

成功的编译了引擎部分,但是为什么没找到包含gl.h的文件

[复制链接]

1

主题

1

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2003-12-1 22:05:00 | 显示全部楼层 |阅读模式
请大虾指点。

难道重写了所有opengl函数?

谢谢

28

主题

685

帖子

703

积分

高级会员

Rank: 4

积分
703
发表于 2003-12-29 15:37:00 | 显示全部楼层

Re:成功的编译了引擎部分,但是为什么没找到包含gl.h的文

找到N个包含有OPENGL的文件。

1

主题

4

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2003-12-29 15:58:00 | 显示全部楼层

Re:成功的编译了引擎部分,但是为什么没找到包含gl.h的文

我也发现了这个问题,不得其解.
用过OPENGL的人都知道,不管程序多么复杂,窗口内容的最终(地形,人物,光影特效..)输出都会转到
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f, -1.0f);
glEnd();
中去,但是找遍了HL2的代码,没有发现最终生成的这些代码.有一个IMESH的接口(pMesh->Draw());,但是没有它的实现部分.
所以有可能,这些关键代码还是在HL2.EXE中实现的,但是,下载的东西里并没有生成HL2.EXE的源文件.(类似QUAKE3,提供了MOD的逻辑部分,但是最终生成画面的代码没有提供)
所以,有可能就象一些人说的,泄露事件可能是故意的.

28

主题

685

帖子

703

积分

高级会员

Rank: 4

积分
703
发表于 2003-12-29 17:22:00 | 显示全部楼层

Re:成功的编译了引擎部分,但是为什么没找到包含gl.h的文

渲染的这一块一般来说会有一个接口。因为考虑到OPENGL,D3D或者还有软件渲染。

28

主题

685

帖子

703

积分

高级会员

Rank: 4

积分
703
发表于 2003-12-31 13:53:00 | 显示全部楼层

Re:成功的编译了引擎部分,但是为什么没找到包含gl.h的文

是我搞错了,渲染的一块的OPENGL我确实没找到,不过找到了D3D的部分。下面的是几段代码
void CShaderAPIDX8:rawMesh( IMeshDX8* pMesh )
{
        if ( ShaderUtil()->GetConfig().m_bSuppressRendering )
                return;

        m_pRenderMesh = pMesh;
        SetVertexDecl( m_pRenderMesh->GetVertexFormat(), m_pRenderMesh->HasColorMesh() );
        CommitStateChanges();
        Assert( m_pRenderMesh && m_pMaterial );
        m_pMaterial->DrawMesh( m_pRenderMesh );
        m_pRenderMesh = NULL;
}



void CMeshDX8::RenderPass()
{
        VPROF( "CMeshDX8::RenderPass" );
        MEASURE_TIMED_STAT( MATERIAL_SYSTEM_STATS_DRAW_INDEXED_PRIMITIVE );

        HRESULT hr;
        Assert( m_Type != MATERIAL_HETEROGENOUS );

        for( int iPrim=0; iPrim < s_nPrims; iPrim++ )
        {
                CPrimList *pPrim = &s_pPrims[iPrim];

                if (pPrim->m_NumIndices == 0)
                        continue;

                if (m_Type == MATERIAL_POINTS)
                {
                        RECORD_COMMAND( DX8_DRAW_PRIMITIVE, 3 );
                        RECORD_INT( m_Mode );
                        RECORD_INT(        s_FirstVertex );
                        RECORD_INT( pPrim->m_NumIndices );

                        // (For point lists, we don't actually fill in indices, but we treat it as
                        // though there are indices for the list up until here).
                        hr = D3DDevice()->DrawPrimitive( m_Mode, s_FirstVertex, pPrim->m_NumIndices );
                        MaterialSystemStats()->IncrementCountedStat(MATERIAL_SYSTEM_STATS_NUM_PRIMITIVES, pPrim->m_NumIndices );
                }
                else
                {
                        int numPrimitives = NumPrimitives( s_NumVertices, pPrim->m_NumIndices );

#ifdef CHECK_INDICES_NOT_RIGHT_NOW_NO_LINELIST_SUPPORT_WHICH_MAKES_THIS_PAINFUL_FOR_DEBUG_MODE
                        // g_pLastVertex - this is the current vertex buffer
                        // g_pLastColorMesh - this is the curent color mesh, if there is one.
                        // g_pLastIndex - this is the current index buffer.
                        // vertoffset : m_FirstIndex
                        Assert( m_Mode == D3DPT_TRIANGLELIST || m_Mode == D3DPT_TRIANGLESTRIP );
                        Assert( pPrim->m_FirstIndex >= 0 && pPrim->m_FirstIndex < g_pLastIndex->IndexCount() );
                        int i;
                        for( i = 0; i < 2; i++ )
                        {
                                CVertexBuffer *pMesh;
                                if( i == 0 )
                                {
                                        pMesh = g_pLastVertex;
                                        Assert( pMesh );
                                }
                                else
                                {
                                        if( !g_pLastColorMesh )
                                        {
                                                continue;
                                        }
                                        pMesh = g_pLastColorMesh->m_pVertexBuffer;
                                        if( !pMesh )
                                        {
                                                continue;
                                        }
                                }
                                Assert( s_FirstVertex >= 0 &&
                                        s_FirstVertex + m_FirstIndex < pMesh->VertexCount() );
                                int numIndices = 0;
                                if( m_Mode == D3DPT_TRIANGLELIST )
                                {
                                        numIndices = numPrimitives * 3;
                                }
                                else if( m_Mode == D3DPT_TRIANGLESTRIP )
                                {
                                        numIndices = numPrimitives + 2;
                                }
                                else
                                {
                                        Assert( 0 );
                                }
                                int j;
                                for( j = 0; j < numIndices; j++ )
                                {
                                        int index = g_pLastIndex->GetShadowIndex( j + pPrim->m_FirstIndex );
                                        Assert( index >= s_FirstVertex );
                                        Assert( index < s_FirstVertex + s_NumVertices );
                                }
                        }
#endif // CHECK_INDICES

                        RECORD_COMMAND( DX8_DRAW_INDEXED_PRIMITIVE, 6 );
                        RECORD_INT( m_Mode );
                        RECORD_INT( s_FirstVertex );
                        RECORD_INT( m_FirstIndex );
                        RECORD_INT( s_NumVertices );
                        RECORD_INT(        pPrim->m_FirstIndex );
                        RECORD_INT( numPrimitives );

                        MaterialSystemStats()->IncrementCountedStat(MATERIAL_SYSTEM_STATS_NUM_PRIMITIVES, numPrimitives );
               
                        {
                                VPROF( "D3DDevice()->DrawIndexedPrimitive" );
                                hr = D3DDevice()->DrawIndexedPrimitive( m_Mode, m_FirstIndex, s_FirstVertex,
                                        s_NumVertices, pPrim->m_FirstIndex, numPrimitives );
                        }
                }

                Assert( !FAILED(hr) );
        }

        MaterialSystemStats()->IncrementCountedStat(MATERIAL_SYSTEM_STATS_NUM_INDEX_PRIMITIVE_CALLS, 1 );
}

8

主题

71

帖子

85

积分

注册会员

Rank: 2

积分
85
发表于 2004-1-10 17:00:00 | 显示全部楼层

Re:成功的编译了引擎部分,但是为什么没找到包含gl.h的文

确实只有D3D
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2024-5-20 04:06

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表