如何使用SOIL在VS2012的 C++环境下显示图片

先看下效果。

这是一个很无聊的功能。。。。首先说下,我做这个功能的初衷并不是为了实现在控制台中显示图片。。。(这貌似很无聊)

而是因为自己想做用C做一个游戏:http://q.cnblogs.com/q/65778/

当然,这是一个艰难而且漫长的过程,我决定只参考下别人的代码而不完全搬运,顺便练下手,因为自己是JAVA程序员,学C貌似有点难度。

我打算从画地图开始做起。

扯远了,开始吧。

SOIL(Simple OpenGL Image Library) 顾名思义,简单的OpenGL图片库

其实载入图片的学习型过程中,我也学到了不少其他的东西,不过都是和图形有关的,比如gtk,opengl等。。。

有经验都来分享下吧,首先是在visual studio环境下配置GTK。

首先从这里下载GTK的完整版(Windows)。

然后解压缩文件到你想要的位置,这里就把文件解压缩到D盘根目录下,为了以后方便,我们把文件夹名称改为gtk

然后用管理员身份运行cmd,键入以下命令 setx GTKDIR D:\gtk /m

然后打开VS2012,新建一个C++项目,最好是空项目。

然后右键单击你的项目,点击属性->配置属性->VC++目录

找到右边的包含目录和库目录

然后点击一下文本框,会出来一下下箭头,点一下,然后点击编辑

然后点击新行,新建一行,然后在包含目录中分别把

$(GTKDIR)\lib\gtk-2.0\include
$(GTKDIR)\lib\glib-2.0\include
$(GTKDIR)\include添加进去,$(GTKDIR)就是刚才在CMD下添加的,当然你也可以省略掉上面的步骤,直接添加绝对路径,当然,这取决于你的喜好。在库目录中添加:
$(GTKDIR)\lib

然后,选择链接器->系统->子系统->窗口 (/SUBSYSTEM:WINDOWS)注意,这个地方,以后如果如下报错。

错误 1 error LNK2019: 无法解析的外部符号 [email protected],该符号在函数 ___tmainCRTStartup 中被引用 C:\Users\li\documents\visual studio 2012\Projects\Win32Project3\Win32Project3\MSVCRTD.lib(crtexew.obj) Win32Project3

那么,就要把这里调回来哦~~~

然后CMD,进入D:\gtk\bin目录,

我们下面要利用里面的命令做一些事情:

首先是输入命令:

pkg-config --cflags gtk+-2.0 --msvc-syntax > compilerflags.txt然后你就可以在D:\gtk或者D:\gtk\bin下面找到这个文件,里面写了如下内容:

-mms-bitfields -ID:/gtk/include/gtk-2.0 -ID:/gtk/lib/gtk-2.0/include -ID:/gtk/include/atk-1.0 -ID:/gtk/include/cairo -ID:/gtk/include/gdk-pixbuf-2.0 -ID:/gtk/include/pango-1.0 -ID:/gtk/include/glib-2.0 -ID:/gtk/lib/glib-2.0/include -ID:/gtk/include -ID:/gtk/include/freetype2 -ID:/gtk/include/libpng14

上面这段话,我们先暂时放这里。

然后我们再输入:

pkg-config --libs gtk+-2.0 --msvc-syntax > linkerflags.txt就会在目录下生产一个名为linkerflags.txt的文件里面内容如下:

/libpath:D:/gtk/lib gtk-win32-2.0.lib gdk-win32-2.0.lib atk-1.0.lib gio-2.0.lib pangowin32-1.0.lib gdi32.lib pangocairo-1.0.lib gdk_pixbuf-2.0.lib pango-1.0.lib cairo.lib gobject-2.0.lib gmodule-2.0.lib gthread-2.0.lib glib-2.0.lib intl.lib

然后我们右键点击项目,然后点击属性,单击C/C++下的命令行,下面有一栏空白的其他选项,把第一段绿色的文字(compilerflags.txt)复制到里面去,

然后跳到链接器->命令行,把第二段绿色的文字(linkerflags.txt)里的内容复制进去。

到此为止,你就可以在include里引用gtk了!

到此为止,大功告成,如果大家以后看到了其他的插件,想引用进来,也可以用类似的方法,大部分情况下都会成功的哦~~

SOIL下载地址

下面来介绍一下SOIL的引入方法,重复的地方就不说了,有一点不同我还是要说下,

如果直接按照上面的方法,会引入成功,但是调试运行程序的时候会报错,这怎么解决呢?

在SOIL目录下->projects下面有以下文件。

都是工程文件哦

这里我们选择VC8来做吧,我在VS2012下面用VC8的成功了,VC9的失败了,不懂为什么。

回到原来的项目,右键单击解决方案添加现有项目,定位到哪个VC8的地方,然后添加进去。

然后再进行引用就OK了。

然后你就可以编译成功了(网上说了一些其他的方法,我试了没用,目前只知道引用工程的方法)。

好了,然后我放代码出来吧:

//#include "graphics.h"
#include <stdio.h>

#include <windows.h>
#include <conio.h>
#include <math.h>
#include <GL\glut.h>
#include <GL\GL.h>
#include <GL\GLU.h>
#include <SOIL.h> //轻量级图形控件

//载入图片
GLuint    myTexture;

void display(void)
{
    glClear(GL_COLOR_BUFFER_BIT);

    glLoadIdentity();
    glTranslatef(100.0f, 100.0f, 0.0f);

    glBindTexture(GL_TEXTURE_2D, myTexture);
    glBegin(GL_QUADS);
    glTexCoord2f(0.0f, 0.0f);
    glVertex2f(0.0f, 0.0f);
    glTexCoord2f(1.0f, 0.0f);
    glVertex2f(256.0f, 0.0f);
    glTexCoord2f(1.0f, 1.0f);
    glVertex2f(256.0f, 256.0f);
    glTexCoord2f(0.0f, 1.0f);
    glVertex2f(0.0f, 256.0f);
    glEnd();

    glutSwapBuffers();
}

void reshape(int width, int height)
{
    glViewport(0, 0, width, height);

    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluOrtho2D(0, width, 0, height);
    glMatrixMode(GL_MODELVIEW);
}

void idle(void)
{
    glutPostRedisplay();
}

int main(int argc, char** argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE);
    glutInitWindowSize(640, 480);
    glutCreateWindow("SOIL test");
    glutDisplayFunc(display);
    glutReshapeFunc(reshape);
    glutIdleFunc(idle);

    myTexture = SOIL_load_OGL_texture("1.jpg", 0, 1, SOIL_FLAG_POWER_OF_TWO | SOIL_FLAG_INVERT_Y);
    if (!myTexture)
    {
        printf("soil failed to load texture\n");
        //exit(0);
    }
    glEnable(GL_TEXTURE_2D);

    glutMainLoop();
    return EXIT_SUCCESS;
}

  其实我也是初学呢,所以代码解释方面的话,我也不敢乱说话。

还有一点打击要注意下,就是载入图片的路径,我这里是1.jpg,这个1.jpg是相对路径,

如果路径错误,是载入不了图片的,设置路径方式如下:

右键单击项目,在配置属性下的调试里面有一个工作目录,工作目录就是相对路径哦。

我自己因为是出于练手阶段,所以删除了一些没必要的代码,其实开始写了一些画正方形和线段的代码,这里没放出来,以后不过会放的。

时间: 2024-11-08 23:01:17

如何使用SOIL在VS2012的 C++环境下显示图片的相关文章

win10 环境 gitbash 显示中文乱码问题处理

gitbash 是 windows 环境下非常好用的命令行终端,可以模拟一下linux下的命令如ls / mkdir 等等,如果使用过程中遇到中文显示不完整或乱码的情况,多半是因为编码问题导致的,修改文本编码即可.操作过程如下: 问题描述 gitbash 在 win10 环境下显示中文出现乱码 处理办法 问题是由于编码不一致造成的,修改稿界面文字编码即可. 操作 1/问题回顾 2/控制台单击右键,选择options选项 3/设置文本本地语言为 zh_CN ,编码选择 GBK, 随后单击OK保存

Ajax环境下弹出提示框

在普通的ASP.NET环境中,我们要想在WEB窗体上弹出一个对话框,经常用到的是如下代码: <span style="font-family:SimSun;font-size:18px;"><span style="font-family:SimSun;font-size:18px;">Response.Write("<script language=javascript>alert('删除试题失败!')</scr

iOS6和iOS7环境下微信登录未显示问题&amp;微信IOS的SDK:isWXAppInstalled总是返回NO和nil

一.问题描述: iOS6和iOS7 环境下未显示微信登录界面,在其他环境下显示正常. 二.问题解决: iOS6和7未出现微信登录按钮, 原因 [WXApi isWXAppInstalled] 返回nil和NO: if ([WXApi isWXAppInstalled]) { ... } 修改为如下判断URL: if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"weixin://"]]) {

解决cocos2dx在VS2012中文版环境下不支持中文的问题

首先要明确的一点是:cocos2dx是支持中文的.因为其编码格式为UTF-8(无签名)——这只是我在网上找到的结论,并非从官方获取,因此不能十分确定,不过应该无误. 那么,为什么在VS2012环境下,cocos2dx不能正确显示中文呢? 这是因为二者编码格式不一致.VS2012中文版的默认编码格式为GB2312-80(我不确定英文版的格式如何,总之应该不是UTF-8).在GB2312-80编码格式中,一个中文占2个字节,而在UTF-8格式中,一个中文占3个字节.这就势必会出现乱码. 找到了原因,

Cocos2d-x 3.0final 终结者系列教程15-win7+vs2012+adt+ndk环境搭建(无Cygwin)

终于不用Cygwin 了,很高兴 为什么要用Win7? 因为VS2012要求Win7以上系统才能安装! 为什么要用vs2012? 因为VS2012才支持C++11! 为什么要支持C++11? 因为Cocos2d-x 3.0final版需要C++11的支持. ----------------------------------------------------------- 准备软件都有哪些? Win7,VS2012,Java SDK , ADT(包含了Eclipse,sdk), Android

vs2012环境下,应用程序无法正常启动0xc000007b

今天在编译程序的时候,需要切换32位和64位,分别编译版本. 当前运行环境是64位,转编译32位,编译通过,但是启动却产生这样的错误(从32位直接转换为64位,也是出现同样的错误): 解决办法很简单,关闭当前的vs,重新启动解决方案,就ok了. 注意:每次切换编译环境,编译通过后,都需要重启vs. vs2012环境下,应用程序无法正常启动0xc000007b

Windows环境下搭建Redis

当网站从数据库加载大量数据的时候会遇到页面响应速度特别缓慢的情形,为了能够更快的从数据库中取得数据加载至内存中,可以考虑使用Memcached来做数据缓存,或者使用内存数据库(比如Redis)将数据库的内容加载至内存中以键值对的形式存储,当页面请求数据的时候可以直接从内存数据库中获取,从而提高了网站的响应速度. Redis在官方文档中声明推荐在Linux环境下安装部署,但实际情况下会有很多开发者需要在Windows环境下解决以上类似的问题并想要采取Redis方案来解决问题,好在微软开放了这方面的

windows环境下搭建ffmpeg开发环境

ffmpeg是一个开源.跨平台的程序库,可以使用在windows.linux等平台下,本文将简单讲解windows环境下ffmpeg开发环境搭建过程,本人使用的操作系统为windows 7,集成开发环境为Visual Studio 2005,ffmpeg版本为2.2.有人可能会说都什么年代了,还VS 2005,现在VS 2010/2012/2013都出了.本人电脑也安装了VS2010,每次打开,伴随着硬盘指示灯的闪烁,以及硬盘的吱吱响声,过了许久才弹出闪屏页面,此时你的思绪可能已经飘到了南极,启

最新 Cocos2d-x 3.2 开发环境搭建(windows环境下)

本篇是基于Cocos2d-x-3.2和vs2012的环境下配置. 1.先从官方站点(www.cocos2d-x.org)下载 Cocos2d-x-3.2文件. 2.因为Cocos2d-x 3.0以上的版本号要求系统windows7以上,vs2012以上.网上寻找并下载VS2012的镜像以及密钥,安装好vs2012. 3.打开Cocos2d-x-3.2文件里的build文件里找到 "cocos2d-win32.vc2012.sln",然后双击执行. 4.在vs2012界面将"c