青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆 - 505  文章 - 1034  trackbacks - 0
<2020年5月>
262728293012
3456789
10111213141516
17181920212223
24252627282930
31123456


子曾經曰過:編程無他,唯手熟爾!

常用鏈接

留言簿(94)

隨筆分類(649)

隨筆檔案(505)

相冊

BCB

Crytek

  • crymod
  • Crytek's Offical Modding Portal

Game Industry

OGRE

other

Programmers

Qt

WOW Stuff

搜索

  •  

積分與排名

  • 積分 - 921951
  • 排名 - 14

最新隨筆

最新評論

閱讀排行榜

評論排行榜

用優秀的UI庫Qt試驗下 ^_^,折騰了接近一天,才能畫出來,但是動畫不動。
截圖


現在的問題是只有“臟”了才畫,也就是才去調用如下的method;不是三角形沒動,是動了但是沒畫出來,我們看不見。
void QD3DWidget::paintEvent( QPaintEvent* )
{
    
if (updatesEnabled()) 
    {
        d3dDraw();
    }
}

用個timer去解決這個問題?

這老外的帖子對我幫助很大,不搞下面的兩條整個QD3DWidget都看不到:

Using Direct3D 9 with Qt - flicker problem

According to the Qt docs, if you want to use GDI or Direct3D on Windows with Qt, you need to:

1) Override QWidget::paintEngine to return NULL
2) Call QWidget::setAttribute(Qt::WA_PaintOnScreen, true)  

部分代碼
HRESULT InitD3D( HWND hWnd )
{
    
// Create the D3D object.
    if( NULL == ( g_pD3D = Direct3DCreate9( D3D_SDK_VERSION ) ) )
        
return E_FAIL;

    
// Set up the structure used to create the D3DDevice
    D3DPRESENT_PARAMETERS d3dpp;
    ZeroMemory( 
&d3dpp, sizeof(d3dpp) );
    d3dpp.Windowed 
= TRUE;
    d3dpp.SwapEffect 
= D3DSWAPEFFECT_DISCARD;
    d3dpp.BackBufferFormat 
= D3DFMT_UNKNOWN;

    
// Create the D3DDevice
    if( FAILED( g_pD3D->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd,
        D3DCREATE_SOFTWARE_VERTEXPROCESSING,
        
&d3dpp, &g_pd3dDevice ) ) )
    {
        
return E_FAIL;
    }

    
// Turn off culling, so we see the front and back of the triangle
    
// 關閉剔除,以便三角形的前后都能被我們看到
    g_pd3dDevice->SetRenderState( D3DRS_CULLMODE, D3DCULL_NONE );

    
// Turn off D3D lighting, since we are providing our own vertex colors
    
// 關閉D3D光照,因為我們提供我們自己的頂點顏色
    g_pd3dDevice->SetRenderState( D3DRS_LIGHTING, FALSE );

    
return S_OK;
}


QD3DWidget.h
#ifndef QD3DWIDGET_H
#define QD3DWIDGET_H

#include 
<QWidget>

class QD3DWidget : public QWidget
{
    Q_OBJECT

public:
    QD3DWidget(QWidget 
*parent = 0);
    
~QD3DWidget();

    
//QSize minimumSizeHint() const;
    
//QSize sizeHint() const;

    QPaintEngine 
*paintEngine() const;
protected:
    
virtual void initializeD3D();
    
virtual void paintD3D();

    
void paintEvent(QPaintEvent*);

    
virtual void d3dInit();
    
virtual void d3dDraw();

    
bool initialized() constreturn m_bInit; }
private:
    
bool m_bInit;
};

#endif // QD3DWIDGET_H


QD3DWidget.cpp
#include "QD3DWidget.h"

#include 
"Matrices.h"

QD3DWidget::QD3DWidget(QWidget 
*parent)
    : QWidget(parent)
    , m_bInit(
false)
{
    resize(QSize(
400300));
    setAttribute(Qt::WA_PaintOnScreen, 
true);
}

QD3DWidget::
~QD3DWidget()
{

}

void QD3DWidget::initializeD3D()
{
    InitD3D(
/*this->topLevelWidget()->*/winId());
    InitGeometry();

    m_bInit 
= true;
}

void QD3DWidget::paintD3D()
{
    
// lyl: 真正要畫的東西放這兒
    Render();
}

void QD3DWidget::paintEvent( QPaintEvent* )
{
    
if (updatesEnabled()) 
    {
        d3dDraw();
    }
}

void QD3DWidget::d3dInit()
{
    initializeD3D();
}

void QD3DWidget::d3dDraw()
{
    
if (!initialized())
    {
        d3dInit();
    }
    paintD3D();
}

//QSize QD3DWidget::minimumSizeHint() const
//{
//    return QSize(50, 50);
//}
//
//QSize QD3DWidget::sizeHint() const
//{
//    return QSize(200, 200);
//}

QPaintEngine 
* QD3DWidget::paintEngine() const
{
    
return NULL;
}


2008-11-26 PM 21:30  用個timer讓動畫顯示出來了,每隔20ms就強制畫一下,參考了Qt 的例子opengl/textures
    QTimer *timer = new QTimer(this);
    connect(timer, SIGNAL(timeout()), 
this, SLOT(rotateOneStep()));
    timer
->start(20);

2010-09-06 AM 2:55 【重劍注:時光匆匆,竟然已是快過去兩年了!今日看了下Ogitor的代碼,0.4.2版本看起來已是相當完善,電腦上有0.3的代碼,隨便看下其render loop】

Ogitor 0.3里面也是用的Timer的方式
MainWindow.cpp   MainWindow的構造函數中
    mTimer = new QTimer(this);
    mTimer
->setInterval(0);
    connect(mTimer, SIGNAL(timeout()), 
this, SLOT(timerLoop()));
    mTimer
->start();
看timerLoop的代碼,可知窗口不最小化時,setInterval為50.
void MainWindow::timerLoop()
{
    if(mHasFileArgs)
    {
        if(mOgreWidget->mOgreInitialised)
        {
            OgitorsRoot::getSingletonPtr()->LoadScene(mArgsFile.toStdString());
            mHasFileArgs = false;
            mOgreWidget->setDoLoadFile(false);
        }
    }
    
    if(isMinimized())
    {
        if(mTimer->interval() != 200)
            mTimer->setInterval(200); 
        return;
    }
    else
    {
        if(mTimer->interval() != 50)
            mTimer->setInterval(50); 
    }

    updateActions();

    if(OgitorsRoot::getSingletonPtr()->IsSceneLoaded())
    {
        mOgreWidget->ProcessKeyActions();
    }

    LogDataVector messages;
    LOGBUFFER.getBuffer(messages);

    for(unsigned int i = 0;i < messages.size();i++)
    {
        updateLog(new QListWidgetItem(messages[i].mMessage, 0, messages[i].mLevel) );
    }
    
    if(messages.size() > 0)
        logWidget->scrollToBottom();
}

不過這個timerLoop里面沒有渲染的代碼啊!改天再看了!睡覺!
ogrewidget.hxx
public Q_SLOTS:
    
void timerLoop();
ogrewidget.cpp
void OgreWidget::timerLoop()
{
    
if(mOgitorMainWindow->isMinimized())
        
return;

    
if(mRenderStop)
    {
        
if(QMessageBox::information(this,"qtOgitor", tr("Render Device is Lost! Please click ok to continue.."), QMessageBox::Ok) == QMessageBox::Ok)
            mRenderStop 
= false;
    }
    update();
}





posted on 2008-11-26 17:25 七星重劍 閱讀(4005) 評論(0)  編輯 收藏 引用 所屬分類: PL--c/c++Game GraphicsC++ lib -- QtIDE -- visual c++
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产乱码精品一区二区三| 久久国产精品一区二区| 欧美手机在线视频| 亚洲五月六月| 欧美成人国产| 亚洲精品女av网站| 中日韩高清电影网| 黑人操亚洲美女惩罚| 噜噜噜在线观看免费视频日韩| 最新国产精品拍自在线播放| 欧美日韩在线一区| 亚洲国产欧美一区二区三区同亚洲 | 欧美中文字幕视频| 欧美精品在线观看91| 狠狠色香婷婷久久亚洲精品| 日韩亚洲欧美在线观看| 国产精品久久久久久久久久免费看 | 久久色中文字幕| 1024亚洲| 欧美无砖砖区免费| 免费短视频成人日韩| 一区二区三区高清在线| 午夜精品视频在线| 在线亚洲一区| 欧美喷潮久久久xxxxx| 麻豆91精品91久久久的内涵| 国产精品成人播放| 欧美激情自拍| 正在播放欧美一区| 欧美高清在线视频| 亚洲精品国产系列| 午夜久久电影网| 久久男女视频| 亚洲精品欧美在线| 欧美喷水视频| 亚洲尤物视频在线| 日韩亚洲欧美一区二区三区| 亚洲婷婷国产精品电影人久久| 免费日韩视频| 欧美一区午夜视频在线观看| 亚洲免费电影在线观看| 欧美精品一级| 午夜日韩在线观看| 美女诱惑黄网站一区| 99国内精品久久| 麻豆国产精品va在线观看不卡| 91久久久久久| 国产精品久久久久久av下载红粉 | 国产乱码精品一区二区三| 欧美+日本+国产+在线a∨观看| 性色av香蕉一区二区| 欧美成年人网| 欧美/亚洲一区| 亚洲另类自拍| 久久不射2019中文字幕| 亚洲欧美一区二区视频| 欧美在线不卡| 欧美va亚洲va日韩∨a综合色| 久久大逼视频| 亚洲大胆av| 国产精品v片在线观看不卡 | 欧美风情在线观看| 亚洲一区二区成人| 黑人巨大精品欧美一区二区| 欧美激情成人在线| 久久www免费人成看片高清 | 欧美成黄导航| 久久久www| 亚洲欧美日韩一区二区| 看片网站欧美日韩| 欧美劲爆第一页| 在线成人h网| 欧美国产日韩精品| 国产精品99久久久久久宅男| 久久福利资源站| 欧美日韩国产三级| 国产精品天天看| 国产日韩欧美一区| 好看不卡的中文字幕| 香蕉久久久久久久av网站| 一本色道久久综合狠狠躁篇怎么玩| 中文av字幕一区| 亚洲国产第一| 欧美国产日韩在线| 欧美日韩岛国| 国产精品久久久久久久久动漫| 国产精品美女在线观看| 在线亚洲自拍| 欧美国产欧美亚洲国产日韩mv天天看完整 | 在线观看成人av| 欧美午夜精品理论片a级大开眼界| 欧美精品在线视频| 亚洲一区三区视频在线观看| 久久亚洲欧美| 国产精品一区二区三区成人| 欧美一区二区观看视频| 亚洲国产一区在线观看| 亚洲资源av| 国产资源精品在线观看| 亚洲天堂网在线观看| 久久亚洲捆绑美女| 久久免费的精品国产v∧| 国产精品婷婷| 久久天堂av综合合色| 久久精品亚洲精品国产欧美kt∨| 精品999久久久| 久久字幕精品一区| 国产精品igao视频网网址不卡日韩| 亚洲午夜极品| 亚洲精品1区| 欧美三级黄美女| 亚洲欧美综合| 午夜在线一区二区| 国产精品99久久久久久久久| 欧美激情一区二区三区高清视频| 亚洲精品裸体| 亚洲欧美日韩精品久久久| 99国产精品国产精品久久| 午夜精品www| 一区二区三区黄色| 亚洲天堂视频在线观看| 亚洲黄一区二区| 久久国产毛片| 欧美亚洲视频一区二区| 亚洲综合好骚| 红桃视频成人| 中文在线资源观看视频网站免费不卡| 亚洲精品综合久久中文字幕| 亚洲第一免费播放区| 欧美日韩亚洲一区二| 久久久久国产精品午夜一区| 狠狠色综合色综合网络| 亚洲一区中文| 亚洲愉拍自拍另类高清精品| 国产伦精品一区二区三区高清版| 久久国产一区| 亚洲欧美日韩高清| 久久精品综合一区| 亚洲一二三区在线| 精品91在线| 国产精品久久久久久久久久免费看| 欧美一区二区视频网站| 亚洲激情一区| 亚洲欧洲日韩女同| 国产综合网站| 国产精品国产三级国产| 国产精品乱人伦一区二区| 亚洲女与黑人做爰| 欧美一级片在线播放| 午夜日韩福利| 1769国内精品视频在线播放| 久久视频国产精品免费视频在线 | 午夜精品一区二区三区在线播放| 亚洲国产天堂网精品网站| 模特精品裸拍一区| 亚洲一区二区视频在线| 亚洲精品国产无天堂网2021| 你懂的视频欧美| 欧美专区第一页| 亚洲黑丝在线| 亚欧成人在线| 精东粉嫩av免费一区二区三区| 欧美日韩一二区| 欧美系列电影免费观看| 欧美一区二区黄色| 亚洲少妇中出一区| 免费日韩av| 欧美v国产在线一区二区三区| 99在线精品视频| 亚洲美女色禁图| 99re6这里只有精品视频在线观看| 尤物yw午夜国产精品视频| 欧美午夜宅男影院在线观看| 欧美激情日韩| 久久精品99久久香蕉国产色戒| 久久国产天堂福利天堂| 欧美一区二区在线观看| 亚洲美女毛片| 欧美激情一区二区在线| 欧美国产日本高清在线| 欧美成在线观看| 亚洲天堂av高清| 午夜精品国产| 欧美在线影院| 国产色综合久久| 国产午夜精品美女毛片视频| 最新国产精品拍自在线播放| 久久国产精品72免费观看| 免费在线国产精品| 欧美在线视频观看免费网站| 亚洲高清不卡av| 午夜精品视频在线观看| 欧美大片在线观看一区| 亚洲国产mv| 久久色在线播放| 激情综合自拍| 久久午夜视频| 亚洲欧美日韩高清| 欧美日韩亚洲视频| 国产综合视频在线观看|