我想在Ubuntu上为Android编译SDL2.
我使用./configure配置SDL2 --host = arm-linux-androideabi
在使用ndk-build进行编译之后,我得到了一系列未定义的引用:
Compile thumb : SDL2-2.0.0 <= SDL_androidkeyboard.c
Compile thumb : SDL2-2.0.0 <= SDL_androidtouch.c
Compile thumb : SDL2-2.0.0 <= SDL_androidvideo.c
Compile thumb : SDL2-2.0.0 <= SDL_androidwindow.c
SharedLibrary : libSDL2-2.0.0.so
/home/ire018/Applications/android-ndk-r9/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: /home/ire018/workspace/SDLActivity/obj/local/armeabi/objs/SDL2-2.0.0/src/audio/SDL_audio.o: in function bootstrap:SDL_audio.c(.data.rel.ro+0x0): error: undefined reference to 'PULSEAUDIO_bootstrap'
/home/ire018/Applications/android-ndk-r9/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: /home/ire018/workspace/SDLActivity/obj/local/armeabi/objs/SDL2-2.0.0/src/audio/SDL_audio.o: in function bootstrap:SDL_audio.c(.data.rel.ro+0x4): error: undefined reference to 'DISKAUD_bootstrap'
/home/ire018/Applications/android-ndk-r9/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: /home/ire018/workspace/SDLActivity/obj/local/armeabi/objs/SDL2-2.0.0/src/core/android/SDL_android.o: in function Java_org_libsdl_app_SDLActivity_onNativeResize:/home/ire018/workspace/SDLActivity/jni/SDL2-2.0.0/src/core/android/SDL_android.c:148: error: undefined reference to 'Android_SetScreenResolution'
/home/ire018/Applications/android-ndk-r9/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: /home/ire018/workspace/SDLActivity/obj/local/armeabi/objs/SDL2-2.0.0/src/core/android/SDL_android.o: in function Java_org_libsdl_app_SDLActivity_onNativeKeyDown:/home/ire018/workspace/SDLActivity/jni/SDL2-2.0.0/src/core/android/SDL_android.c:155: error: undefined reference to 'Android_OnKeyDown'
/home/ire018/Applications/android-ndk-r9/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: /home/ire018/workspace/SDLActivity/obj/local/armeabi/objs/SDL2-2.0.0/src/core/android/SDL_android.o: in function Java_org_libsdl_app_SDLActivity_onNativeKeyUp:/home/ire018/workspace/SDLActivity/jni/SDL2-2.0.0/src/core/android/SDL_android.c:162: error: undefined …Run Code Online (Sandbox Code Playgroud) 我已经学习 SDL 2D 编程一段时间了,现在我想创建一个结合使用 SDL 和 OpenGL 的程序。我是这样设置的:
SDL_Init(SDL_INIT_VIDEO);
window = SDL_CreateWindow("SDL and OpenGL", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, width, height, SDL_WINDOW_OPENGL);
context = SDL_GL_CreateContext(window);
Run Code Online (Sandbox Code Playgroud)
该程序现在只是一个使用 OpenGl 显示的带有白线的黑色窗口。这是渲染的代码:
glClearColor(0, 0, 0, 0);
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_LINES);
glVertex2d(1, 0);
glVertex2d(-1, 0);
glEnd();
SDL_GL_SwapWindow(window);
Run Code Online (Sandbox Code Playgroud)
所以问题是,我想额外使用纯 SDL 和 SDL_Renderer 对象渲染纹理,就像我之前没有 OpenGL 所做的那样。我试过了,但没有用。甚至有可能做到这一点以及如何做到这一点?我所做的是创建一个 SDL_Renderer 然后在绘制 OpenGL 的东西之后这样做:
SDL_Rect fillRect;
fillRect.w = 50;
fillRect.h = 50;
fillRect.x = 0;
fillRect.y = 0;
SDL_SetRenderDrawColor(renderer, 100, 200, 100, 0);
SDL_RenderFillRect(renderer, &fillRect);
SDL_RenderPresent(renderer);
Run Code Online (Sandbox Code Playgroud)
但这不起作用。矩形未显示,尽管在几毫秒内它会略微出现。我觉得 OpenGL 渲染正在覆盖它。
我对不同目录中的两个文件进行了更改,如何为单个提交添加两个文件。我可以做什么,添加第一个文件,然后将目录更改为第二个文件,然后添加第二个文件,最后执行提交。这行得通吗?
你能解释一下kCGImageAlphaPremultipliedFirst和之间的区别kCGImageAlphaFirst吗?Premultiplied在实践中意味着什么?
我正在使用SDL2和C++ 11构建一个游戏引擎(就像个人项目一样,为了娱乐和练习),我想要做的一件事就是尝试让图形驱动程序使用最新支持的版本OpenGL,并根据版本改变引擎的图形部分的呈现方式.这样我可以使用OpenGL的最新功能,它们相关且有用,但也支持旧硬件.我能想到两种方法:
检测最新支持的OpenGL版本并使用它,但我想不出有任何方法可以做到这一点.是的,我试过谷歌.
使用试验和错误,从最新版本开始(4.3,但我的GTX 460仅支持最多4.2,即使我更新了驱动程序),如果失败(通过检查SDL返回NULL上下文检测到) ),我降低版本号,然后再试一次.
我使用的方法(#2)在创建4.3上下文后立即失败.我知道我的图形驱动程序现在只支持4.2,但我原以为GLX被设计为抛出一个错误,给出一个NULL上下文,并让你的程序继续运行,但它无法通过上下文的失败创建.我的假设是关于GLX如何表现错误?有没有办法在不创建上下文的情况下检测最新支持的版本?
因为我知道有些人喜欢看到演示错误的完整和最小的来源,这里是:
#include <SDL2/SDL.h>
#include <SDL2/SDL_opengl.h>
int main() {
if( SDL_Init( SDL_INIT_EVERYTHING ) < 0 ) {
return -1;
}
SDL_Window* window = SDL_CreateWindow( "SDL Window", 0, 0, 800, 600, SDL_WINDOW_OPENGL | SDL_WINDOW_SHOWN );
if( window == nullptr ) {
return -1;
}
unsigned int major = 4;
unsigned int minor = 3;
SDL_GLContext context = nullptr;
while( context == nullptr ) {
SDL_GL_SetAttribute( SDL_GL_CONTEXT_MAJOR_VERSION, major );
SDL_GL_SetAttribute( SDL_GL_CONTEXT_MINOR_VERSION, minor );
context = SDL_GL_CreateContext( …Run Code Online (Sandbox Code Playgroud) 我正试图在MinGW中为Haskell安装SDL,但我遇到了一些问题.cabal找不到C库,我不知道为什么.这里有一些信息:
make native吧:它安装在/usr/include/SDL和/usr/lib;cabal install SDL,它失败了,因为它找不到头文件和lib;cabal install SDL --extra-include-dirs=/usr/include/SDL --extra-lib-dirs=/usr/lib.它找到头文件但仍然不是lib;SDL.dll中/usr/lib,仍然有同样的烦恼;/usr/lib到两个PATH及LD_LIBRARY_PATH,仍然无法找到@!#*C库.你有好主意吗?
我正在寻找一个相当于以下的Mongo:
select distinct event_type_id from events
order by created_at desc
limit 10,20
Run Code Online (Sandbox Code Playgroud)
Event Mongo文件如下:
{
_id: BSON(), event_type_id: 1, created_at: Date(), other_data: {}
}
Run Code Online (Sandbox Code Playgroud) 关于SDL 2.0的本教程使用从main返回的代码,而不首先销毁任何资源指针:
int main(int argc, char** argv){
if (SDL_Init(SDL_INIT_EVERYTHING) == -1){
std::cout << SDL_GetError() << std::endl;
return 1;
}
window = SDL_CreateWindow("Lesson 2", SDL_WINDOWPOS_CENTERED,
SDL_WINDOWPOS_CENTERED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN);
if (window == nullptr){
std::cout << SDL_GetError() << std::endl;
return 2; //this
}
renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED
| SDL_RENDERER_PRESENTVSYNC);
if (renderer == nullptr){
std::cout << SDL_GetError() << std::endl;
return 3; //and this too
}
Run Code Online (Sandbox Code Playgroud)
在退出之前,我应该告诉我的终止函数是DestroyRenderer,DestroyWindow,DestroyTexture等吗?
perf15 天以来我一直面临着一个相关问题。希望这里的大佬们能帮我解决这个问题。
我需要让perf工具在具有 ARM 架构的设备上运行。但是,在记录跟踪点事件然后运行./perf报告时,它显示共享对象名称为[unknown],符号为00000,而对于软件和硬件事件,我没有遇到此问题。我已经交叉编译了perfmailine上可用的工具并将其移植到具有ARM架构的设备上。
在内核 3.4 的基于 ARM 的设备上输出。
./perf record -e kmem:kmalloc cal
[ perf record: Woken up 1 times to write data ]
[ perf record: Captured and wrote 0.007 MB perf.data (~321 samples) ]
./perf report
Overhead Command Shared Object Symbol
....... ............. .............. ...............
40.78% cal [unknown] [.]00000000
31.6% cal [unknown] [.]00000000
[...]
Run Code Online (Sandbox Code Playgroud)
在 ubuntu 12.04 系统(内核 3.10)上它工作得很好。
x86 架构上的输出
./perf record -e kmem:kmalloc …Run Code Online (Sandbox Code Playgroud) 使用Linux,如何在gitk中配置字体和字体大小?
浏览菜单可能非常令人沮丧,因为它们提供的配置可能性非常小.