Jump to content

  • Log In with Google      Sign In   
  • Create Account


Member Since 02 Nov 2010
Offline Last Active Dec 21 2012 06:16 AM

Topics I've Started

Same vertices and different drawing sequences cause invisibility

21 December 2012 - 05:39 AM

I am currently doing my personal experiment named Maze3D. The problem looks like this: In OpenGL there is a term: Cull Mode.

I am currently using glFrontFace( GL_CW ); glEnable( GL_CULL_FACE ); and using same vertices to draw a double-side wall:

void DrawInnerWall( Point3F& p1, Point3F& p2, Point3F& p3, Point3F& p4 )
        glTexCoord2f( 0.0f, 1.0f ); glVertex3fv( p1 );
        glTexCoord2f( 1.0f, 1.0f ); glVertex3fv( p2 );
        glTexCoord2f( 1.0f, 0.0f ); glVertex3fv( p3 );
        glTexCoord2f( 0.0f, 0.0f ); glVertex3fv( p4 );
    void DrawOuterWall( Point3F& p1, Point3F& p2, Point3F& p3, Point3F& p4 )
        glTexCoord2f( 1.0f, 1.0f ); glVertex3fv( p1 );
        glTexCoord2f( 0.0f, 1.0f ); glVertex3fv( p2 );
        glTexCoord2f( 0.0f, 0.0f ); glVertex3fv( p3 );
        glTexCoord2f( 1.0f, 0.0f ); glVertex3fv( p4 );

I am using

DrawInnerWall( p8, p7, p3, p4 );
DrawOuterWall( p7, p8, p4, p3 );

However, it looks like this:



The maze and arrow are currect, but in a 2D view, there is no wall but in 3D view we can see a wall clearly.

In other case, same vertices and different drawing sequences cause invisibility. Could you please figure out the problem?

glGetError function needs linking library, I don't know its name

13 October 2012 - 01:58 AM

I am currently working in Linux, and using g++ as my compiler, the ld return this information:
(.text.startup+0x3b):-1: Error:undefined reference to `glGetError'
I don't know what library to link.

Has AlphaBlend to do with IDirect3DSurface9?

26 February 2011 - 08:35 PM

I am recently build up my own Game engine using DX 9,Now I've switched to render system, and I planned to have two versions, one for 2D and the other for 3D.
For 2D rendering. I wonder that whether AlphaBlend has to do with IDirect3DSurface9? I used the following code:
// 创建离屏平面一
 if ( FAILED( g_pDevice->CreateOffscreenPlainSurface(
  clientWidth,    // 宽
  clientHeight,    // 高
  D3DFMT_X8R8G8B8,   // D3D格式
  D3DPOOL_SYSTEMMEM,   // 内存池格式
  &g_pSurface,    // 指向平面的指针的指针
  NULL/*保留参数*/ ) ) ) return;

 // 载入背景平面图像
 if ( FAILED( D3DXLoadSurfaceFromFile(
  g_pSurface,     // 目标平面
  NULL,      // 目标调色板
  NULL,      // 目标矩形
  "平面源图像.png",   // 载入的文件
  NULL,      // 源矩形
  D3DX_DEFAULT,    // 滤波器
  D3DCOLOR_XRGB( 0, 0, 0 ), // 关键色(掩码色)
  NULL/*源文件信息*/ ) ) ) return;

// 启用Alpha混合
 g_pDevice->SetRenderState( D3DRS_ALPHABLENDENABLE, TRUE );
 g_pDevice->SetRenderState( D3DRS_SRCBLEND, D3DBLEND_SRCALPHA );

But when comes to rendering, the alphablend doesn't work. It seems that alphablend has not to do with IDirect3DSurface9.

How could I solve the problem?

Help! I want to show game logo gradually in a dark background

02 November 2010 - 10:20 PM

How can I do to realize this? I've come up with three ideas:
First I can load different bitmaps frequently so as to flash each frame;
Second I can use AlphaBlend technique to add different color to this logo;
Thirdly I can use fog to clarify a logo gradually.

The question is: I can't fluently master this techniques, Meanwhile, I don't know these lots of macros.

Forgive me, I am a newcomer using DirectX. I've only learn it for three months.

So please help me with my work! Thanks.

[Edited by - jiangcaiyang on November 3, 2010 5:06:02 AM]