使用windows在opengl中旋转png图像

时间:2017-02-21 11:16:08

标签: opengl

我们使用半圆作为png图像,我们正在旋转以适应我们使用opengl旋转API的圆边框我们没有得到正确的解决方案,可以指出原因是什么。

function data_get_curl($url){
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    $uaa = $_SERVER['HTTP_USER_AGENT'];
    curl_setopt($ch, CURLOPT_USERAGENT, "User-Agent: $uaa");
    return curl_exec($ch);
}

$cache_option = true;
$id = 'DU6IdS2gVog';
$url = 'https://www.googleapis.com/youtube/v3/videos?key={Youtube_Api}&fields=items(snippet(title%2Cdescription%2Ctags))&part=snippet&id=DU6IdS2gVog';
$data = data_get_curl($url);
header('Content-Type: application/json');
echo $data;

function cache_set($id,$data,$time = 84600){
    if(!$cache_option) return NULL;
    $name = ROOT."/cache/".md5($id).".json";
    $fh = fopen($name, "w");
    fwrite($fh, serialize($data));
    fclose($fh);
}

function cache_get($id){
    if(!$cache_option) return NULL;
    $file = ROOT."/cache/".md5($id).".json";
    if(file_exists($file)){
        if(time() - 84600 < filemtime($file)){
            return unserialize(data_get_curl($file));
        }else{
            unlink($file);
        }
    }
    return NULL;
} 

其中m_uiTextures用于加载纹理。

1 个答案:

答案 0 :(得分:1)

从我的猜测来看,你正在二维表面绘制一个四边形而没有#34;到世界坐标&#34;转换,但你仍然在3d旋转,它不好。

glm :: rotate要求您提供一个矩阵来存储旋转,旋转角度以及围绕哪个轴旋转。 如果你想围绕x轴旋转:

transform = glm::rotate(transform,angle,glm::vec3(1.0f,0.0f,0.0f);

或者您想围绕y轴和z轴旋转

transform = glm::rotate(transform,angle,glm::vec3(0.0f,1.0f,1.0f)'

更改

transform = glm::rotate(transform, glm::radians(-60.0f), glm::vec3(m_fAltXPos, m_fAltYPos, 0.0f));

transform = glm::rotate(transform, glm::radians(-60.0f), glm::vec3(0.0f, 0.0f, 1.0f));

只是因为你在2D空间工作而且你不会受益于围绕x或y轴的旋转。