Rumah pangkalan data tutorial mysql 简析OpenGL的2D、3D切换

简析OpenGL的2D、3D切换

Jun 07, 2016 pm 03:10 PM
opengl suis

最近做游戏的时候遇到了一个小问题,我们的游戏是2D、3D结合的(准确的说是主菜单、议会界面是2D的,但是真实打斗场景为3D),由2D切换到3D没有问题,但是由3D切换回2D问题就来了:每次切换都只有glClear()管用,其余的加载图片之类的都显示不了。经过分析感

最近做游戏的时候遇到了一个小问题,我们的游戏是2D、3D结合的(准确的说是主菜单、议会界面是2D的,但是真实打斗场景为3D),由2D切换到3D没有问题,但是由3D切换回2D问题就来了:每次切换都只有glClear()管用,其余的加载图片之类的都显示不了。经过分析感觉应该是视图矩阵的问题,因为在3D场景中我们多次调用了glLookAt()、gluPerspective()等函数,而每调用一次,OpenGL的机理是把当前矩阵乘上转换算子,所以每次都乘,到了2D场景的时候如果不转换回来就会出问题。

可以关注我的个人主页:http://alanzjl.sinaapp.com

解决这个问题有两种办法,第一种是在display()函数里通过glPushMatrix()、glPopMatrix()解决。但是我们遇到的问题是可能在display中Push、Pop的次数太多,导致最终这种办法不行。还有一种就是在初始状态下记录初始矩阵,在将切换回2D的时候恢复初始矩阵。

可通过
glGetIntegerv(GL_VIEWPORT,&view); //viewport
glGetDoublev(GL_MODELVIEW_MATRIX,&model);//model
glGetDoublev(GL_PROJECTION_MATRIX,&proj);//projection
得到。

但是我们只要得到一次而且是第一次的矩阵就可以,所以要借助一个static int变量。具体实现代码:

void my_display(void){
    static flagggg;
    if(flagggg==0){
                 //只取第一次的初始矩阵
        glGetIntegerv(GL_VIEWPORT,&view); //viewport
        glGetDoublev(GL_MODELVIEW_MATRIX,&model);//model
        glGetDoublev(GL_PROJECTION_MATRIX,&proj);//projection
        flagggg=1;
    }
 
    /**************************************************************
                        模式入口
     **************************************************************/
    if(Enter_Mode==-1)
        introduction();
    else if(Enter_Mode==0)
        main_menu();
    else if(Enter_Mode==1){
        adventure();      //此处是3D
    }
    else if(Enter_Mode==2){    //此处是2D,会由上面一种模式切换到此模式,需要矩阵还原
        glLoadMatrixd(view);
        glMatrixMode(GL_MODELVIEW);
        glLoadMatrixd(model);
        glMatrixMode(GL_PROJECTION);
        glLoadMatrixd(proj);
        congress();
    }
    else if(Enter_Mode==3)
        achievement();
    else if(Enter_Mode==4)
        quit();
    else if(Enter_Mode==5)
        complete();
 
    /**************************************************************/
}
Salin selepas log masuk

其中,view、model、proj被我定义为了全局变量,它们是:

GLint view[4];
GLdouble model[16];
GLdouble proj[16];
Salin selepas log masuk


Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial Java
1663
14
Tutorial PHP
1263
29
Tutorial C#
1236
24
Tutorial operasi untuk menukar daripada versi rumah win11 kepada versi profesional_Tutorial operasi untuk menukar daripada versi rumah win11 kepada versi profesional Tutorial operasi untuk menukar daripada versi rumah win11 kepada versi profesional_Tutorial operasi untuk menukar daripada versi rumah win11 kepada versi profesional Mar 20, 2024 pm 01:58 PM

Bagaimana untuk menukar Win11 Home Edition kepada Win11 Professional Edition? Dalam sistem Win11, ia dibahagikan kepada Home Edition, Professional Edition, Enterprise Edition, dan lain-lain, dan kebanyakan komputer riba Win11 telah dipasang dengan sistem Win11 Home Edition. Hari ini, editor akan menunjukkan kepada anda langkah-langkah untuk beralih daripada versi rumah win11 kepada versi profesional 1. Pertama, klik kanan pada komputer ini pada desktop dan sifat win11. 2. Klik Tukar Kunci Produk atau Tingkatkan Windows. 3. Kemudian klik Tukar Kunci Produk selepas memasukkan. 4. Masukkan kekunci pengaktifan: 8G7XN-V7YWC-W8RPC-V73KB-YWRDB dan pilih Seterusnya. 5. Kemudian ia akan mendorong kejayaan, jadi anda boleh menaik taraf versi rumah win11 kepada versi profesional win11.

Bagaimana untuk bertukar antara 4g dan 5g pada Xiaomi Mi 14Ultra? Bagaimana untuk bertukar antara 4g dan 5g pada Xiaomi Mi 14Ultra? Feb 23, 2024 am 11:49 AM

Xiaomi 14Ultra adalah salah satu model Xiaomi yang paling popular tahun ini bukan sahaja menaik taraf pemproses dan pelbagai konfigurasi, tetapi juga membawa banyak aplikasi berfungsi kepada pengguna Ini boleh dilihat dari jualan telefon bimbit Xiaomi 14Ultra popular, tetapi terdapat beberapa fungsi yang biasa digunakan yang mungkin belum anda ketahui. Jadi bagaimanakah Xiaomi 14Ultra bertukar antara 4g dan 5g? Izinkan saya memperkenalkan kandungan khusus kepada anda di bawah! Bagaimana untuk menukar antara 4g dan 5g pada Xiaomi 14Ultra? 1. Buka menu tetapan telefon anda. 2. Cari dan pilih pilihan "Rangkaian" dan "Rangkaian Mudah Alih" dalam menu tetapan. 3. Dalam tetapan rangkaian mudah alih, anda akan melihat pilihan "Jenis rangkaian pilihan". 4. Klik atau pilih pilihan ini dan anda akan melihat

OpenGL rendering gpu harus memilih kad automatik atau grafik? OpenGL rendering gpu harus memilih kad automatik atau grafik? Feb 27, 2023 pm 03:35 PM

Pilih "Auto" untuk gpu rendering opengl secara umumnya pilih mod automatik untuk rendering opengl secara automatik mengikut perkakasan sebenar komputer jika anda ingin tentukan, kemudian nyatakan kad grafik yang sesuai lebih sesuai untuk memaparkan kandungan grafik vektor 2D dan 3D, sokongan untuk API pengkomputeran umum OpenGL lebih kuat daripada CPU.

Bagaimana untuk melaksanakan pensuisan sistem dwi dalam sistem Win10 Bagaimana untuk melaksanakan pensuisan sistem dwi dalam sistem Win10 Jan 03, 2024 pm 05:41 PM

Ramai rakan mungkin tidak terbiasa dengan sistem menang apabila mereka mula-mula bersentuhan dengannya. Terdapat dua sistem dalam komputer Pada masa ini, anda sebenarnya boleh beralih antara kedua-dua sistem antara dua sistem. Bagaimana untuk menukar antara dua sistem dalam sistem win10 1. Pensuisan kekunci pintasan 1. Tekan kekunci "win" + "R" untuk membuka larian 2. Masukkan "msconfig" dalam kotak larian dan klik "OK" 3. Dalam " yang dibuka " konfigurasi sistem" Dalam antara muka, pilih sistem yang anda perlukan dan klik "Tetapkan sebagai Lalai". Selepas selesai, "Mulakan semula" boleh melengkapkan suis. Kaedah 2. Pilih suis semasa but 1. Apabila anda mempunyai sistem dwi, ​​antara muka operasi pemilihan akan muncul semasa but Anda boleh menggunakan papan kekunci " Atas dan bawah untuk memilih sistem

Tukar mod but sistem dwi komputer Apple Tukar mod but sistem dwi komputer Apple Feb 19, 2024 pm 06:50 PM

Cara bertukar antara sistem dwi Apple apabila memulakan komputer Apple adalah peranti berkuasa Selain sistem pengendalian macOS mereka sendiri, anda juga boleh memilih untuk memasang sistem pengendalian lain, seperti Windows, untuk mencapai pensuisan dwi sistem. Jadi bagaimana kita bertukar antara kedua-dua sistem semasa boot? Artikel ini akan memperkenalkan kepada anda cara menukar antara sistem dwi pada komputer Apple. Pertama sekali, sebelum memasang sistem dwi, ​​kami perlu mengesahkan sama ada komputer Apple kami menyokong pensuisan dwi sistem. Secara umumnya, komputer Apple adalah berasaskan

Cara menggunakan kekunci pintasan untuk menukar buku kerja dalam excel Cara menggunakan kekunci pintasan untuk menukar buku kerja dalam excel Mar 20, 2024 pm 01:50 PM

Dalam aplikasi perisian excel, kita terbiasa menggunakan kekunci pintasan untuk membuat beberapa operasi lebih mudah dan lebih cepat Kadang-kadang terdapat data yang berkaitan antara beberapa jadual dalam excel Apabila kita melihatnya, kita perlu sentiasa bertukar antara tugas kaedah pensuisan yang lebih cepat, ia akan menjimatkan banyak masa yang terbuang pada pensuisan, yang akan sangat membantu meningkatkan kecekapan kerja Apakah kaedah yang boleh digunakan untuk menyelesaikan isu ini, editor akan membincangkannya hari ini Kandungannya ialah: Bagaimana untuk menggunakan kekunci pintasan untuk menukar buku kerja dalam Excel. 1. Mula-mula, anda boleh melihat berbilang buku kerja di bahagian bawah jadual excel terbuka Anda perlu bertukar dengan cepat antara buku kerja yang berbeza, seperti yang ditunjukkan dalam rajah di bawah. 2. Kemudian tekan kekunci Ctrl pada papan kekunci tanpa bergerak, dan pilih kerja di sebelah kanan jika anda perlu

Memahami lebar penuh dan separuh lebar: lihat pada teknik pensuisan Memahami lebar penuh dan separuh lebar: lihat pada teknik pensuisan Mar 25, 2024 pm 01:36 PM

Dalam kehidupan seharian, kita sering menghadapi masalah lebar penuh dan separuh lebar, tetapi beberapa orang mungkin mempunyai pemahaman yang mendalam tentang makna dan perbezaannya. Lebar penuh dan separuh lebar sebenarnya adalah konsep kaedah pengekodan aksara, dan ia mempunyai aplikasi khas dalam input komputer, penyuntingan, penataan huruf, dsb. Artikel ini akan menyelidiki perbezaan antara lebar penuh dan separuh lebar, teknik penukaran dan aplikasi kehidupan sebenar. Pertama sekali, takrifan lebar penuh dan separuh lebar dalam bidang aksara Cina ialah: aksara lebar penuh menduduki satu kedudukan aksara, dan aksara separuh lebar menduduki separuh kedudukan aksara. Dalam komputer, lulus

Saya tidak boleh menggunakan alt+tab untuk menukar antara muka dalam win11. Apakah sebabnya? Saya tidak boleh menggunakan alt+tab untuk menukar antara muka dalam win11. Apakah sebabnya? Jan 02, 2024 am 08:35 AM

Win11 menyokong pengguna untuk menggunakan kekunci pintasan alt+tab untuk memaparkan alat penukaran desktop, tetapi baru-baru ini seorang rakan menghadapi masalah yang win11 alt+tab tidak boleh menukar antara muka saya tidak tahu sebab atau cara menyelesaikannya. Mengapa win11 alt+tab tidak boleh menukar antara muka Jawapan: Kerana fungsi kekunci pintasan dilumpuhkan, berikut ialah penyelesaiannya: 1. Pertama, kita tekan "win+r" pada papan kekunci untuk membuka larian. 2. Kemudian masukkan "regedit" dan tekan Enter untuk membuka dasar kumpulan. 3. Kemudian masukkan "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer"

See all articles