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

AstaTus
-- 夏天不熱。。
posts - 22,comments - 12,trackbacks - 0

    這個兩個函數的參數一大堆,害我頭都大了2,3倍。。今天整理下已經能夠大概清晰明白的參數。。
緩存存的是一個屏幕像素的值。。
   先來SetTextureStageState:

   HRESULT SetTextureStageState(
   DWORD Stage,
   D3DTEXTURESTAGESTATETYPE Type,
   DWORD Value
   );

   stage這個參數是指第幾層紋理,1.2.3...9,, 這個版本的dx最多支持9層紋理。
   Type:Defines the type of operation that a texture stage will perform.//定義對該紋理的哪個屬進行設置,值很多。。。
   Value: 指的是前面所選屬性的值

type:
    D3DTSS_ALPHAOP = 4,     //alpha通道的運算,
    D3DTSS_COLOROP = 1,     //顏色的運算
                                                    //這里的op 是operations,指對前面設置的顏色進行運算
                                                   //既后面的2個type:D3DTSS_COLORARG1,D3DTSS_COLORARG2
                                                   //或D3DTSS_ALPHAARG1,D3DTSS_ALPHAARG2 = 6
value:
    D3DTOP_DISABLE = 1,                           //該紋理無效,既不顯示
    D3DTOP_SELECTARG1 = 2,                  //選擇第1個顏色值(既D3DTSS_COLORARG1的值)作為紋理顏色輸出
    D3DTOP_SELECTARG2 = 3,                  //選擇第2個顏色值(既D3DTSS_COLORARG2的值)作為紋理顏色輸出
    D3DTOP_MODULATE = 4,                    //將顏色1和顏色2相乘作為紋理顏色輸出
    D3DTOP_MODULATE2X = 5,               //將顏色1和顏色2相乘后左移1bit(用于增亮)作為紋理顏色輸出 ,
    D3DTOP_MODULATE4X = 6,               //將顏色1和顏色2相乘后左移2bit(用于增亮)作為紋理顏色輸出
    D3DTOP_ADD = 7,                                 //將顏色1和顏色2相加作為紋理顏色輸出
    D3DTOP_ADDSIGNED = 8,                  ///////////后面的參見SDK 都是對2個顏色進行運算
    D3DTOP_ADDSIGNED2X = 9,
    D3DTOP_SUBTRACT = 10,
    D3DTOP_ADDSMOOTH = 11,
    D3DTOP_BLENDDIFFUSEALPHA = 12,
    D3DTOP_BLENDTEXTUREALPHA = 13,
    D3DTOP_BLENDFACTORALPHA = 14,
    D3DTOP_BLENDTEXTUREALPHAPM = 15,
    D3DTOP_BLENDCURRENTALPHA = 16,
    D3DTOP_PREMODULATE = 17,
    D3DTOP_MODULATEALPHA_ADDCOLOR = 18,
    D3DTOP_MODULATECOLOR_ADDALPHA = 19,
    D3DTOP_MODULATEINVALPHA_ADDCOLOR = 20,
    D3DTOP_MODULATEINVCOLOR_ADDALPHA = 21,
    D3DTOP_BUMPENVMAP = 22,
    D3DTOP_BUMPENVMAPLUMINANCE = 23,
    D3DTOP_DOTPRODUCT3 = 24,
    D3DTOP_MULTIPLYADD = 25,
    D3DTOP_LERP = 26,
    D3DTOP_FORCE_DWORD = 0x7fffffff,

     
type:
    D3DTSS_COLORARG1 = 2,  
    D3DTSS_COLORARG2 = 3,
    D3DTSS_ALPHAARG1 = 5,
    D3DTSS_ALPHAARG2 = 6,
    D3DTSS_COLORARG0 = 26,
    D3DTSS_ALPHAARG0 = 27,
    D3DTSS_RESULTARG = 28,
value:
     這里的TA指的是texture arguments ,
      D3DTA_CONSTANT             //給當前紋理一個固定的值;
      D3DTA_DIFFUSE;               //diffuse的值作為參數 diffuse 可能有多個來源。。比如材質,vertex
      D3DTA_SELECTMASK         //Mask value for all arguments; not used when setting texture arguments 這句話不理解啊,為什么要偽裝呢  
      D3DTA_SPECULAR             //取spercular 的值作為參數  來源同diffuse
      D3DTA_TEMP                     //待定。。
      D3DTA_TEXTURE              //用紋理的顏色值作為參數
      D3DTA_TFACTOR              //待定。。

 

////////////////////////////////////////////////////////////////////////////////////
以下還沒來得及研究。。貌似叫難懂,還請高人指點啊


D3DTSS_BUMPENVMAT00 = 7,
D3DTSS_BUMPENVMAT01 = 8,
D3DTSS_BUMPENVMAT10 = 9,
D3DTSS_BUMPENVMAT11 = 10,
D3DTSS_TEXCOORDINDEX = 11,
D3DTSS_BUMPENVLSCALE = 22,
D3DTSS_BUMPENVLOFFSET = 23,
D3DTSS_TEXTURETRANSFORMFLAGS = 24,
D3DTSS_CONSTANT = 32,
D3DTSS_FORCE_DWORD = 0x7fffffff,

 


HRESULT SetRenderState(
D3DRENDERSTATETYPE State,     //所要設置的狀態
DWORD Value                   //該狀態的值
);
 
State 的取值
 
 
 
 
 
 
 

 

posted @ 2008-10-08 23:12 AstaTus 閱讀(3268) | 評論 (3)編輯 收藏
      在地形中獲得高度,必須要知道該點所在三角形三個角的坐標和這三個點的高度,然后根據線性插值估算出該點的高度,判斷該點在哪個正方形中,比較容易,只要根據定點之間的間距,和地形的開始坐標就可求出該正方形的左下角頂點,但要再進一步算是哪個三角形,就有一個技巧了,
比如:

當正方形的邊長一樣時,頂點V在哪個三角形中只要判斷坐標點 X + Y是否大于 邊長就可以了。一般地形應該都是直角邊相等的三角型吧。
然后再根據所確定下來的三角形的三個點進行線性插值就可以了。。
posted @ 2008-10-08 15:45 AstaTus 閱讀(396) | 評論 (0)編輯 收藏
   強烈的欲望,我要變強!!吼~~~~~~~~~~~~~~~~~~~~~~~~~
posted @ 2008-10-06 22:08 AstaTus 閱讀(249) | 評論 (1)編輯 收藏
     摘要: 最近看的那本directx 的書的源碼都是用函數,沒用c++的類,用起來超不爽,所以自己來,封裝了下,現在才看到《頂點的顏色》的那章,所以類還很不完整,以后慢慢改進。。 //Base.h/**//////////////////////////////////////////////#ifndef BASE_H#define BASE_H#include <d...  閱讀全文
posted @ 2008-09-20 22:10 AstaTus 閱讀(1360) | 評論 (0)編輯 收藏
      開始看directx了,發現學ogre,還是現弄懂directx會比較好點。

      這個程序主要體現了directx的一個基本的框架。
  1. 在初始化D3D設備后,開始設置頂點緩存,將要顯示的點輸入,
  2.用函數D3DXMatrixPerspectiveFovLH 求投影矩陣,該函數根據視域體的屬性求出投影矩陣
  3.設置頂點渲染的方法,
device->CreateVertexBuffer(3 * sizeof(Vertex), D3DUSAGE_WRITEONLY, D3DFVF_XYZ, D3DPOOL_MANAGED, &Triangle, 0);

    Vertex
* vertices;
    Triangle
->Lock(00,(void**)&vertices, 0);

    vertices[
0= Vertex(-1.0f0.0f2.0f);
    vertices[
1= Vertex(0.0f1.0f2.0f);
    vertices[
2= Vertex(1.0f0.0f2.0f);

    Triangle
->Unlock();

    D3DXMATRIX proj;
    D3DXMatrixPerspectiveFovLH(
&proj, D3DX_PI * 0.5f, (float)800 / (float)6001.0f1000.0f);
    
    device
->SetTransform(D3DTS_PROJECTION, &proj);

    device
->SetRenderState(D3DRS_FILLMODE, D3DFILL_WIREFRAME);


  4.在消息循環函數中
while(msg.message != WM_QUIT)
    
{
        
if(::PeekMessage(&msg, 000, PM_REMOVE)) //////////////這里有個疑惑,什么時候if語句不成立呢
        {
            ::TranslateMessage(
&msg);
            ::DispatchMessage(
&msg);
             }

          
else
        
{    
               
float currTime  = (float)timeGetTime();
               
float timeDelta = (currTime - lastTime)*0.001f;

                ptr_display(timeDelta);

               lastTime 
= currTime;
           }

    }
這里是場景的渲染
device->Clear(00, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, 0xffffffff1.0f0);

        device
->BeginScene();

        device
->SetStreamSource(0, Triangle, 0sizeof(Vertex));   //將Vertexbuffer中的頂點倒入到流當中
        device
->SetFVF(Vertex::FVF); //設置頂點的格式  FVF已被我賦值為 FVF_XYZ
 
        device
->DrawPrimitive(D3DPT_TRIANGLELIST, 01); //圖元類型 三角形 個數為一個

        device
->EndScene();

        
// Swap the back and front buffers.
        device->Present(0000);
posted @ 2008-09-18 20:30 AstaTus 閱讀(286) | 評論 (0)編輯 收藏
   今天寫的一個程序,很奇怪,我要讓每個ball的M_CurLoc的值都不一樣,但是單步調試的時候是做到了不一樣,但直接運行的時候結果每個ball的M_CurLoc的值居然都一樣,喊我調了2個多小時。。抓狂ing。。
后來發現是隨機數里的srand在作怪
void Balloon::Loc_Reset()
{
        srand(time(NULL));
    M_CurLoc.x 
= rand()%700 + 100;
    M_CurLoc.y 
= rand()%700 + 600;
    flag 
= UP;

}


for(i = 0; i < n; i++)
{
    tempball.Loc_Reset();

    M_ActBall.push_back(tempball);    

}
這個代碼實現的n個ball 中的 M_CurLoc都是一樣的,因為CPU運行太快 以致每一次尋環中srand(time(NULL))所取得的系統時間都一樣。。(srand的精度為秒),所以在調試和直接運行這兩種情況下會出現兩種結果。。
最后改了下
void Balloon::Loc_Reset()
{
    M_CurLoc.x 
= rand()%700 + 100;
    M_CurLoc.y 
= rand()%700 + 600;
    flag 
= UP;

}


void Balloon::GetSrand()
{
    srand(time(NULL));

}


////////////////////////////////////

tempball.GetSrand();

for(i = 0; i < n; i++)
{
    tempball.Loc_Reset();

    M_ActBall.push_back(tempball);    

}
posted @ 2008-09-10 19:13 AstaTus 閱讀(260) | 評論 (0)編輯 收藏
   這個是攝像機繞食人魔頭的一個demo,
其中的關鍵就在于攝像機的自動繞行 和 攝像機一直朝向食人魔頭,

ogre這引擎似乎什么都幫你想到了,很多的函數都已封裝好,就怕你找不到

以下的是這個demo關鍵代碼,都是在createscene里的,我給了下具體的解釋:
// Make sure the camera track this node
        mCamera->setAutoTracking(true, headNode);    //這里讓攝像機總是朝著魔頭

        // Create the camera node & attach camera
        SceneNode* camNode = mSceneMgr->getRootSceneNode()->createChildSceneNode();
        camNode
->attachObject(mCamera);

        
// set up spline animation of node
        Animation* anim = mSceneMgr->createAnimation("CameraTrack"10);    //這里的10指代這個攝像機繞一圈要花10秒鐘,至于這10秒鐘怎么分,在下面關鍵幀設置中會分配

        
// Spline it for nice curves
        anim->setInterpolationMode(Animation::IM_LINEAR); //設置兩點間移動時的插值類型,有線型和弧線型兩種,什么效果大家自個試吧
        
// Create a track to animate the camera's node
//以下就要設置相機繞行的軌跡了
        NodeAnimationTrack* track = anim->createNodeTrack(0, camNode);
        
// Setup keyframes
//關鍵幀就10幀,這與動畫的總時間10剛好對應
        TransformKeyFrame* key = track->createNodeKeyFrame(0); // startposition
        key = track->createNodeKeyFrame(2.5);
        key
->setTranslate(Vector3(500,500,-1000));
        key 
= track->createNodeKeyFrame(5);
        key
->setTranslate(Vector3(-1500,1000,-600));
        key 
= track->createNodeKeyFrame(7.5);
        key
->setTranslate(Vector3(0,-100,0));
        key 
= track->createNodeKeyFrame(10);
        key
->setTranslate(Vector3(0,0,0));
        
// Create a new animation state to track this
        mAnimState = mSceneMgr->createAnimationState("CameraTrack");
        mAnimState
->setEnabled(true);
關鍵幀設置的那8行代碼其實就是說從0~2.5秒 攝像機從起始點移動到(500, 500, -1000),后面幾行同理


該demo中的createplane函數還是有點不明白
 MeshPtr createPlane(
            const String& name, const String& groupName, const Plane& plane,
            Real width, Real height,
            int xsegments = 1, int ysegments = 1,
            bool normals = true, int numTexCoordSets = 1,
            Real uTile = 1.0f, Real vTile = 1.0f,   //這個tile啥意思啦??????????????????
 const Vector3& upVector = Vector3::UNIT_Y,
   HardwareBuffer::Usage vertexBufferUsage = HardwareBuffer::HBU_STATIC_WRITE_ONLY,
   HardwareBuffer::Usage indexBufferUsage = HardwareBuffer::HBU_STATIC_WRITE_ONLY,
   bool vertexShadowBuffer = true, bool indexShadowBuffer = true);
posted @ 2008-09-07 20:45 AstaTus 閱讀(1114) | 評論 (0)編輯 收藏
      發現3D這東西還是蠻好玩的,尤其是有了3D的ogre引擎以后。今天一口氣看到了基礎教程4.。。 
      到現在為止,就接觸了一個Application 類 和 frameListener類

Application類繼承了 ExampleApplication,主要是一些場景的資源載入 和 資源的設置 還有最重要的渲染函數
frameListener類繼承了ExampleFrameListener,  OIS::MouseListener, OIS::KeyListener。 后兩個是外部類,不屬于ogre內部
這兩個類主要用于鍵盤和鼠標的監聽,雖然還沒了解它內部的運行機制,不過感覺有點像 單片機里的中斷,過幾天基礎
玩熟了,去研究下。^_^

除以上兩個類外
目前遇到比較重要的幾個類有:SceneManger,  Root, Camera, ViewPort (現在還沒弄清楚Camera, ViewPort 之間的關系),Entity
Light, SceneNode。。。


場景節點在控制實體旋轉的時候,它是以自己的局部坐標系為標準的
Entity *ent = mSceneMgr->createEntity( "Robot""robot.mesh" );
       SceneNode 
*node = mSceneMgr->getRootSceneNode()->createChildSceneNode( "RobotNode", Vector3( -10000 )  );
       node
->attachObject( ent );

       node
->yaw( Degree( -90 ) );


這含代碼的最后一行就是以ent實體中心為坐標原點的坐標系旋轉的。。

如果要繞某一個軸旋轉捏?嘎嘎



posted @ 2008-08-15 21:16 AstaTus 閱讀(368) | 評論 (0)編輯 收藏
  以前小梅老師教C++的時候,沒有涉及到過DLL,已至現在看DLL超累。。。雖然看上去那本《VC++動態鏈接庫深入淺出》只有很少的幾頁,但代碼稍有不對,就出錯,尤其是在鏈接上,。。。汗個。。

剛才花了大把時間寫的個例子

//useyumen.cpp

#include 
<stdio.h>
#pragma comment(lib, 
"..\\yumen\\Debug\\yumen.lib")

extern"C" __declspec(dllimport) Add(int x, int y);

int main()
{
 printf(
"%d", Add(35));
 
return 0;
}


/**///////////////////以下是console 的 DLL工程

//yumen.h
#ifndef YUMEN_H
#define YUMEN_H
extern "C" int __declspec(dllexport) Add(int x, int y);

#endif

//yumen.cpp
#include "yumen.h"

int Add(int x, int y)
{
    
return x + y;
}



發現如果是類的DLL,調用起來比較方便。。。 

 
posted @ 2008-08-04 22:41 AstaTus 閱讀(242) | 評論 (0)編輯 收藏

      在一個類中定義了一個引用類型的變量,他的初始化不能放在構造函數中,也不能放在其他的函數中,只能放在一個神秘的角落--構造函數的初始化列表中。。嘎嘎
   
  

#include <iostream.h>


int i = 9;

class A
{
    
protected:
    
int &m;
    
    
public:
    A():m(i)   
//將i賦給引用變量m
    {
        cout
<<m<<endl;
    }

}
;

void main()
{
    A a;

}


 

posted @ 2008-08-01 10:52 AstaTus 閱讀(783) | 評論 (1)編輯 收藏
僅列出標題
共3頁: 1 2 3 
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲成人在线免费| 亚洲人成网站777色婷婷| 韩国一区电影| 一区二区三区视频观看| 亚洲精品欧洲| 国产精品久久久久久影视| 欧美一区=区| 久久久7777| 一本色道久久精品| 亚洲女人小视频在线观看| 欧美日韩一本到| 欧美一区二区私人影院日本| 久久精品国产69国产精品亚洲| 国产视频在线观看一区| 老鸭窝91久久精品色噜噜导演| 欧美成人激情视频免费观看| 亚洲无玛一区| 久久精品一区二区三区不卡牛牛| 亚洲美女电影在线| 亚洲少妇在线| 亚洲激情网站| 亚洲字幕一区二区| 亚洲欧洲日韩综合二区| 亚洲欧美日韩中文视频| 亚洲欧洲日产国产综合网| 午夜精品久久久久久久蜜桃app| 亚洲国产日韩精品| 亚洲午夜激情网页| 亚洲人被黑人高潮完整版| 亚洲欧美视频| 9l国产精品久久久久麻豆| 欧美在线free| 91久久精品一区二区别| 亚洲综合不卡| 亚洲人精品午夜| 午夜欧美精品| 亚洲午夜伦理| 美女精品视频一区| 久久久亚洲人| 国产精品a级| 亚洲日本欧美日韩高观看| 国内一区二区三区| 亚洲欧美久久久| 亚洲视频精选| 欧美成年人网| 欧美成人资源| 尤物精品国产第一福利三区| 亚洲视频在线免费观看| 一本久久a久久免费精品不卡| 久久躁狠狠躁夜夜爽| 毛片精品免费在线观看| 影音先锋久久精品| 老牛国产精品一区的观看方式| 免费亚洲一区| 亚洲精品在线二区| 欧美精品粉嫩高潮一区二区| 亚洲精选一区二区| 国产精品99久久久久久有的能看 | 亚洲精品乱码久久久久久久久| 久久九九全国免费精品观看| 老司机成人网| 亚洲精品在线免费观看视频| 欧美麻豆久久久久久中文| 亚洲免费高清视频| 欧美伊人久久| 黄网站免费久久| 欧美高清视频在线观看| 亚洲影视九九影院在线观看| 欧美日本不卡高清| 一区二区激情小说| 欧美主播一区二区三区美女 久久精品人 | 国产精品无码永久免费888| av成人毛片| 欧美影视一区| 亚洲高清不卡在线观看| 欧美精品日日鲁夜夜添| 亚洲综合成人在线| 欧美大片在线观看一区| 一区二区三区四区国产| 国产欧美精品久久| 猛男gaygay欧美视频| 一本一本久久a久久精品综合妖精 一本一本久久a久久精品综合麻豆 | 亚洲第一精品夜夜躁人人爽| 欧美xxx成人| 亚洲亚洲精品三区日韩精品在线视频| 欧美综合国产精品久久丁香| 亚洲大片精品永久免费| 欧美日韩一区自拍| 久久精品国产999大香线蕉| 亚洲国产一区二区三区a毛片| 亚洲欧美在线免费观看| 亚洲大片免费看| 国产精品jvid在线观看蜜臀| 久久精品一区二区国产| 一区二区三区视频在线观看| 你懂的视频欧美| 午夜免费久久久久| 亚洲精品老司机| 国产资源精品在线观看| 欧美精品自拍偷拍动漫精品| 欧美在线观看www| 一区二区三区四区五区视频| 免费观看30秒视频久久| 午夜久久tv| 亚洲深爱激情| 亚洲日本理论电影| 国产午夜精品视频免费不卡69堂| 欧美伦理影院| 美乳少妇欧美精品| 欧美中文字幕第一页| 亚洲一级高清| 日韩视频一区二区在线观看 | 亚洲欧美中文日韩在线| 欧美大片va欧美在线播放| 欧美中文在线视频| 亚洲一区二区三| 日韩一级免费| 亚洲国产精品va在线看黑人| 国产综合色在线| 国产欧美视频在线观看| 欧美日韩一级片在线观看| 男女精品视频| 久久亚洲国产成人| 久久精品亚洲国产奇米99| 新狼窝色av性久久久久久| 中日韩视频在线观看| 亚洲精选在线观看| 亚洲国产精品悠悠久久琪琪| 狠狠操狠狠色综合网| 亚洲人成网站777色婷婷| 亚洲成人在线视频网站| 激情成人av| 国内精品视频在线观看| 国产午夜精品麻豆| 国产一区二区看久久| 国产在线国偷精品产拍免费yy| 国产欧美一区二区精品仙草咪| 亚洲激情视频在线| 麻豆精品在线观看| 久久精品人人做人人综合 | 一本色道久久88精品综合| 亚洲人成在线播放| 亚洲精品一区二区三区樱花| 亚洲三级免费观看| 亚洲精品久久久久| 亚洲精品一区二区三区樱花| 99riav国产精品| 亚洲视频精选在线| 午夜一区二区三视频在线观看| 亚洲欧美自拍偷拍| 欧美中文字幕精品| 久久综合久久综合九色| 欧美视频在线观看视频极品| 亚洲一区免费观看| 亚洲成人中文| 国产欧美精品一区二区三区介绍| 欧美成人激情在线| 久久精品人人做人人爽电影蜜月| 这里是久久伊人| 亚洲欧美日韩国产综合精品二区| 亚洲韩国日本中文字幕| 国产一级一区二区| 国产精品久久影院| 欧美视频在线观看| 欧美va亚洲va日韩∨a综合色| 久久国产夜色精品鲁鲁99| 中国成人在线视频| 亚洲视频www| 一本到高清视频免费精品| 亚洲国产三级网| 亚洲二区在线| 欧美国产日韩二区| 欧美国产丝袜视频| 麻豆精品一区二区av白丝在线| 久久综合久久综合久久综合| 久久精品视频va| 久久久久九九九九| 久久久精品999| 老司机久久99久久精品播放免费 | 一区二区在线视频观看| 国产欧美va欧美va香蕉在| 国产精品一区久久久| 国产毛片精品国产一区二区三区| 免费精品99久久国产综合精品| 狂野欧美激情性xxxx| 久久夜色精品一区| 六十路精品视频| 蜜桃久久av一区| 欧美日本中文| 欧美三级黄美女| 国产精品夜夜夜一区二区三区尤| 国产精品久久久一区二区三区| 国产欧美丝祙| 在线日韩视频| 一区二区三区四区五区精品| 亚洲一区二区三区在线观看视频| 欧美一区二区三区的| 免费国产一区二区| 亚洲另类在线视频| 亚洲高清电影|